Konvicka 0 Odesláno: 29. Prosinec, 2013 Share Odesláno: 29. Prosinec, 2013 Zdravím vás, chtěl bych se vás zeptat, po 3 letech jsem se vrátil k pawnu.. A chci si udělat FS... Vytvořil jsem si pickup: OnFilterScriptInit: CreatePickup(19130,1,3887.1135,597.8398,23.1000); Public OnPlayerPickUpPickup public OnPlayerPickUpPickup(playerid, pickupid){ if(IsPlayerInSphere(playerid,3887.1135,597.8398,23.1000,15)==1) { if(IsPlayerInAnyVehicle(playerid)==1) { ShowPlayerDialog(playerid,NitroDialog,DIALOG_STYLE_MSGBOX,"{FF8000}Nitro specialista... ","{FF0000}Chceš\n {00FF00}NITRO.?","Ano","Ne"); }else{ SendClientMessage(playerid, Cervena, "[Chyba]_Nesedíš ve vozidle, nemůžeme ti nainstalovat nitro.!"); } } return 1; } Proč když najedu Autem na ten pickup, dialog se mi nezobrazí... Ale když tam vejdu bez auta..Napíše se mi že nejsem v Autě.... Už jsem to zkoušel i s : if(pickupid == nazevpickupu) A stejně nic.. EDIT: Popřípadě, jak to nejlépe udělat..... Zkoušel jsem to i přes tlačítko, ale taky neúspěšně... Už si nevím rady... Link to comment Share on other sites More sharing options...
0 LosO 5 Odesláno: 29. Prosinec, 2013 Share Odesláno: 29. Prosinec, 2013 Skus CreatePickup(19130,14,3887.1135,597.8398,23.1000); Link to comment Share on other sites More sharing options...
0 Konvicka 0 Odesláno: 29. Prosinec, 2013 Author Share Odesláno: 29. Prosinec, 2013 Tak jsem to tam dal, a pickup se mi už ani nezobrazil... Link to comment Share on other sites More sharing options...
0 Rad012 23 Odesláno: 29. Prosinec, 2013 Share Odesláno: 29. Prosinec, 2013 Tak jsem to tam dal, a pickup se mi už ani nezobrazil... a bol si v aute ? Link to comment Share on other sites More sharing options...
0 Konvicka 0 Odesláno: 29. Prosinec, 2013 Author Share Odesláno: 29. Prosinec, 2013 Ano, byl jsem v autě... Ale ten pickup, se ani nezobrazil... Zkusil jsem to i takhle : forward Kontrola(playerid); OnFilterScriptInit: SetTimer("Kontrola",1000,1); public Kontrola(playerid) { if(IsPlayerInSphere(playerid,3887.1135,597.8398,23.1000,15)==1) { if(IsPlayerInAnyVehicle(playerid)==1) { ShowPlayerDialog(playerid,NitroDialog,DIALOG_STYLE_MSGBOX,"{FF8000}Nitro specialista... ","{FF0000}Chceš\n {00FF00}NITRO.?","Ano","Ne"); }else{ SendClientMessage(playerid, Cervena, "[Chyba]_Nesedíš ve vozidle, nemůžeme ti nainstalovat nitro.!"); } } return 1; } Fakt už nevím...Ani takhle to nejde..:/ Zkoušel jsem to i dát do OnPlayerUpdate - I tak bez úspěchu... Link to comment Share on other sites More sharing options...
0 Hlavní moderátor vEnd 279 Odesláno: 29. Prosinec, 2013 Hlavní moderátor Share Odesláno: 29. Prosinec, 2013 používáš normální SetTimer, který nevrací žádné parametry, takže v publicu nemůžeš mít playerid, čili musíš to udělat přes cyklus: public Kontrola() { for(new i;i<MAX_PLAYERS;i++) { if(!IsPlayerConnected(i)) continue; //není-li dané id online, přeskočíme na další if(IsPlayerInSphere(i,3887.1135,597.8398,23.1000,15) == 1) { if(IsPlayerInAnyVehicle(i) == 1) { ShowPlayerDialog(i,NitroDialog,DIALOG_STYLE_MSGBOX,"{FF8000}Nitro specialista... ","{FF0000}Chceš\n {00FF00}NITRO.?","Ano","Ne"); } else { SendClientMessage(i, Cervena, "[Chyba]_Nesedíš ve vozidle, nemůžeme ti nainstalovat nitro.!"); } } } return 1; } Link to comment Share on other sites More sharing options...
0 Konvicka 0 Odesláno: 29. Prosinec, 2013 Author Share Odesláno: 29. Prosinec, 2013 A proč to nefungovalo ani v OnPlayerUpdate.? Teď nevím jestli to funguje... Vyzkouším... P.S. Jak jsem očekával...Zase nic . Link to comment Share on other sites More sharing options...
0 Hlavní moderátor vEnd 279 Odesláno: 29. Prosinec, 2013 Hlavní moderátor Share Odesláno: 29. Prosinec, 2013 pokud ti to nepůjde, tak dodej i kód funkce IsPlayerInSphere Link to comment Share on other sites More sharing options...
0 Konvicka 0 Odesláno: 29. Prosinec, 2013 Author Share Odesláno: 29. Prosinec, 2013 Vkládám celý soubor .pwn... Smazal jsem publicy, ve kterých nic není-- #include <a_samp> //------------------------------------------------------------------------------Barvy #define Modra 0x142FE4FF #define Oranzova 0xFF8040FF #define Cervena 0xFF0000FF #define Zelena 0x00FF00FF #define NitroDialog 57486 //------------------------------------------------------------------------------Dcmd #define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1 //------------------------------------------------------------------------------Newy //------------------------------------------------------------------------------Forwardy forward IsPlayerInSphere(playerid,Float:x,Float:y,Float:z,radius); forward GetPlayerDistanceToPointEx(playerid,Float:x,Float:y,Float:z); forward Kontrola(); public OnFilterScriptInit() { print("\n--------------------------------------"); print(" Race-Drift by Konvicka "); print("--------------------------------------\n"); //------------------------------------------------------------------------------Pickupy CreatePickup(19130,1,3887.1135,597.8398,23.1000); SetTimer("Kontrola",1000,1); return 1; } public Kontrola() { for(new i;i<MAX_PLAYERS;i++) { if(!IsPlayerConnected(i)) continue; //není-li dané id online, přeskočíme na další if(IsPlayerInSphere(i,3887.1135,597.8398,23.1000,15) == 1) { if(IsPlayerInAnyVehicle(i) == 1) { ShowPlayerDialog(i,NitroDialog,DIALOG_STYLE_MSGBOX,"{FF8000}Nitro specialista... ","{FF0000}Chceš\n {00FF00}NITRO.?","Ano","Ne"); } else { SendClientMessage(i, Cervena, "[Chyba]_Nesedíš ve vozidle, nemůžeme ti nainstalovat nitro.!"); } } } return 1; } public OnPlayerCommandText(playerid, cmdtext[]) { if (strcmp("/mycommand", cmdtext, true, 10) == 0) { // Do something here return 1; } dcmd(radrift,7,cmdtext); return 0; } public OnPlayerPickUpPickup(playerid, pickupid) { if(IsPlayerInSphere(playerid,3887.1135,597.8398,23.1000,15)==1) { if(IsPlayerInAnyVehicle(playerid)==1) { ShowPlayerDialog(playerid,NitroDialog,DIALOG_STYLE_MSGBOX,"{FF8000}Nitro specialista... ","{FF0000}Chceš\n {00FF00}NITRO.?","Ano","Ne"); }else{ SendClientMessage(playerid, Cervena, "[Chyba]_Nesedíš ve vozidle, nemůžeme ti nainstalovat nitro.!"); } } return 1; } public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { if(dialogid == NitroDialog) { if(response == 1) { if(IsPlayerInAnyVehicle(playerid)) { new State=GetPlayerState(playerid); if(State!=PLAYER_STATE_DRIVER)return SendClientMessage(playerid,Cervena,"[Chyba]_Pro nainstalování nitra, musíš sedět na místě řidiče.!"); new vehicleid2 = GetPlayerVehicleID(playerid); if(IsPlayerInInvalidNosVehicle(playerid,GetPlayerVehicleID(playerid))) { SendClientMessage(playerid,Cervena,"[Chyba]_Toto vozidla, není přizpůsobeno pro nainstalování nitra.!"); }else{ AddVehicleComponent(vehicleid2, 1010); SendClientMessage(playerid, Zelena, "[Nitro]_Nitro ti bylo úspěšně nainstalováno do vozidla.!"); } }else{ SendClientMessage(playerid, Cervena, "[Chyba]_Nesedíš ve vozidle, nemůžeme ti nainstalovat nitro.!"); } } } return 1; } dcmd_radrift(playerid,params[]) { #pragma unused params SetPlayerPos(playerid,3728.9480,594.3935,24.4674); SetPlayerFacingAngle(playerid,182.3907); return 1; } //------------------------------------------------------------------------------ IsPlayerInInvalidNosVehicle(playerid,vehicleid) { #define MAX_INVALID_NOS_VEHICLES 67 new InvalidNosVehicles[MAX_INVALID_NOS_VEHICLES] = { //Motorky 581,523,462,521,463,522,461,448,468,586, //Kola 509,481,510, //Lode 472,473,493,595,484,430,453,452,446454, //Helikoptéry 548,425,417,487,497,563,501,465,447,469,488, //Monster track 406,573,444,556,557, //Letadla 592,577,511,512,593,520,553,464,476,519,460,513,539, //Čtyřkolky 471, //Návěsy 435,450,591,606,607,610,584,608,611, //V,laky 590,569,537,538,570,449, }; vehicleid = GetPlayerVehicleID(playerid); if(IsPlayerInVehicle(playerid,vehicleid)) { for(new i = 0; i < MAX_INVALID_NOS_VEHICLES; i++) { if(GetVehicleModel(vehicleid) == InvalidNosVehicles[i]) { return true; } } } return false; } //------------------------------------------------------------------------------ IsPlayerInSphere(playerid,Float:x,Float:y,Float:z,radius){ if(GetPlayerDistanceToPointEx(playerid,x,y,z) < radius){ return 1;}return 0;} GetPlayerDistanceToPointEx(playerid,Float:x,Float:y,Float:z){ new Float:x1,Float:y1,Float:z1; new Float:tmpdis; GetPlayerPos(playerid,x1,y1,z1); tmpdis = floatsqroot(floatpower(floatabs(floatsub(x,x1)), 2)+floatpower(floatabs(floatsub(y,y1)), 2)+floatpower(floatabs(floatsub(z,z1)),2)); return floatround(tmpdis);} Link to comment Share on other sites More sharing options...
0 Hlavní moderátor vEnd 279 Odesláno: 29. Prosinec, 2013 Hlavní moderátor Share Odesláno: 29. Prosinec, 2013 IsPlayerInSphere(playerid,Float:x,Float:y,Float:z,radius){ if(GetPlayerDistanceToPointEx(playerid,x,y,z) < radius){ return 1;}return 0;} GetPlayerDistanceToPointEx(playerid,Float:x,Float:y,Float:z){ new Float:x1,Float:y1,Float:z1; new Float:tmpdis; GetPlayerPos(playerid,x1,y1,z1); tmpdis = floatsqroot(floatpower(floatabs(floatsub(x,x1)), 2)+floatpower(floatabs(floatsub(y,y1)), 2)+floatpower(floatabs(floatsub(z,z1)),2)); return floatround(tmpdis);} zbytečně si to komplikuješ, dnes už je dostupná nativní funkce IsPlayerInRangeOfPoint, která porovnává, zda je hráč v dosahu, zkus tohle smazat (nebo jen hodit do poznámek) a namísto toho dej nahoru tohle: #define IsPlayerInSphere(%0,%1,%2,%3,%4) IsPlayerInRangeOfPoint(%0,%4,%1,%2,%3) nezaručuji, že to bude fungovat, ale chyba může být v definici funkce GetPlayerDistanceToPointEx, zkus to tedy touto cestou Link to comment Share on other sites More sharing options...
0 Konvicka 0 Odesláno: 29. Prosinec, 2013 Author Share Odesláno: 29. Prosinec, 2013 Opět server bez reakce aby se mi zobrazil dialog :/ Link to comment Share on other sites More sharing options...
0 Hlavní moderátor vEnd 279 Odesláno: 29. Prosinec, 2013 Hlavní moderátor Share Odesláno: 29. Prosinec, 2013 dobrá, zeptám se tě takto... máš ten FS vůbec načtený, když ho zkoušíš? Link to comment Share on other sites More sharing options...
0 Konvicka 0 Odesláno: 29. Prosinec, 2013 Author Share Odesláno: 29. Prosinec, 2013 Ano, vše jede, příkaz, i to když tam jdu pěšky, tak se zobrazí že nejsem v autě...Ale prostě když tam dojedu v autě, tak to neudělá vůbec nic... Link to comment Share on other sites More sharing options...
0 kell94_cz 7 Odesláno: 29. Prosinec, 2013 Share Odesláno: 29. Prosinec, 2013 Vymaž funkci IsPlayerInSphere celou a používej klasickou funkci IsPlayerInRangeOfPoint a ten dialog ti nejde protože maximální ID dialogu lze použít 32767 a ty tam máš 57486 takže to změň na menší třeba 14287 a ten dialog už ti půjde. Link to comment Share on other sites More sharing options...
0 Konvicka 0 Odesláno: 29. Prosinec, 2013 Author Share Odesláno: 29. Prosinec, 2013 Fakt že jo, Díky moc kluci..... Moc jste mě pomohli... To vše kvůli blbýmu číslu...Díky moc ) Link to comment Share on other sites More sharing options...
0 lekpri 0 Odesláno: 3. Leden, 2014 Share Odesláno: 3. Leden, 2014 hj Link to comment Share on other sites More sharing options...
0 ATomas 290 Odesláno: 3. Leden, 2014 Share Odesláno: 3. Leden, 2014 Aby jsi opravil chybu, musis ji spravne detekovat. Chyba neni v IsPlayerInSphere Pickup typu 1 je pro sebrani hracem nikoliv autem. Kdyz nastavis 14 tak jde sebrat autem, ale pro tveho clienta po sebrani zmizi a po chvilce se znovu zobrazi. Da se to vyresim "resfesnutim" (DestroyPickup a opetovny CreatePickup), sice se nevyhnes probliknuti, ale pickup tam bude stale. Link to comment Share on other sites More sharing options...
0 Konvicka 0 Odesláno: 3. Leden, 2014 Author Share Odesláno: 3. Leden, 2014 Když jsem ale nastavil PickupID = 14 , pickup se mi nezobrazil vůbec... Navíc už je to vyřešeno..... Link to comment Share on other sites More sharing options...
0 ATomas 290 Odesláno: 3. Leden, 2014 Share Odesláno: 3. Leden, 2014 Tak on se pickup, ktery ma x nebo y souradnici pobliz 4000 nebo pres nezobraztuje vubec i jako typ 1 Link to comment Share on other sites More sharing options...
0 Konvicka 0 Odesláno: 3. Leden, 2014 Author Share Odesláno: 3. Leden, 2014 PickupID 1 se mi zobrazil, ale nefungoval mi...Ale to bylo zapříčiněno všechno tím dialogid ) Link to comment Share on other sites More sharing options...
0 ATomas 290 Odesláno: 4. Leden, 2014 Share Odesláno: 4. Leden, 2014 Taky se mi jednou stalo, ze pickupid 14 tak uplne ne vzdy drzi na svem miste, ale pada na defautlni textury, tedy pokud mas nekde postavenou mapu, pickup bych hledal na urovni hladiny more nebo nekde poceste po Ztove souradnici Dialogy na zobrazovani pickupu nemaji vliv Link to comment Share on other sites More sharing options...
0 Konvicka 0 Odesláno: 4. Leden, 2014 Author Share Odesláno: 4. Leden, 2014 Dialogid sice namají na pickup vliv, ale mě šlo o to aby mě jel dialog )... Mám mapu na moři no ) Link to comment Share on other sites More sharing options...
Dotaz
Konvicka 0
Zdravím vás,
chtěl bych se vás zeptat, po 3 letech jsem se vrátil k pawnu..
A chci si udělat FS...
Vytvořil jsem si pickup:
OnFilterScriptInit:
Public OnPlayerPickUpPickup
Proč když najedu Autem na ten pickup, dialog se mi nezobrazí...
Ale když tam vejdu bez auta..Napíše se mi že nejsem v Autě....
Už jsem to zkoušel i s :
A stejně nic..
EDIT:
Popřípadě, jak to nejlépe udělat.....
Zkoušel jsem to i přes tlačítko, ale taky neúspěšně...
Už si nevím rady...
Link to comment
Share on other sites
21 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