Stellet 7 Odesláno: 17. Březen, 2016 Share Odesláno: 17. Březen, 2016 (upraveno) CMD:motor(playerid, params[]) { new jmeno[MAX_PLAYER_NAME], str[300], str1[300]; GetPlayerName(playerid, jmeno, sizeof(jmeno)); new engine, lights, alarm, doors, bonnet, boot, objective; for(new i=0; i < sizeof(Vozidlo); i++) { if(!Vozidlo[i][id_x]) continue; if(!IsPlayerInAnyVehicle(playerid)) continue; if(!strlen(Vozidlo[i][majitel])) continue; if(!strcmp(Vozidlo[i][majitel], jmeno, true)) { if(Vozidlo[i][c_motor] == 0) { Vozidlo[i][c_motor] = 1; format(str, sizeof(str), "* %s dává klíček do zapalování, otáčí s ním, čímž zapíná motor.", RJmeno(playerid)); ProxDetector(30, playerid, str, 0x64E375FF, 0x64E375FF, 0x64E375FF, 0x64E375FF, 0x64E375FF); GetVehicleParamsEx(GetPlayerVehicleID(playerid), engine, lights, alarm, doors, bonnet, boot, objective); SetVehicleParamsEx(GetPlayerVehicleID(playerid), VEHICLE_PARAMS_ON, lights, alarm, doors, bonnet, boot, objective); ShowPlayerInfoBox(playerid, "> Motor nastartovan."); format(str1, sizeof(str1), "* Motor nastartován (( %s ))", RJmeno(playerid)); ProxDetector(30, playerid, str1, 0x64C3E3FF, 0x64C3E3FF, 0x64C3E3FF, 0x64C3E3FF, 0x64C3E3FF); return 1; } if(Vozidlo[i][c_motor] == 1) { Vozidlo[i][c_motor] = 0; format(str, sizeof(str), "* %s otáčí klíčkem, čímž vypíná motor a vytahuje klíček ze zapalování.", RJmeno(playerid)); ProxDetector(30, playerid, str, 0x64E375FF, 0x64E375FF, 0x64E375FF, 0x64E375FF, 0x64E375FF); format(str1, sizeof(str1), "* Motor vypnut (( %s ))", RJmeno(playerid)); ProxDetector(30, playerid, str1, 0x64C3E3FF, 0x64C3E3FF, 0x64C3E3FF, 0x64C3E3FF, 0x64C3E3FF); GetVehicleParamsEx(GetPlayerVehicleID(playerid), engine, lights, alarm, doors, bonnet, boot, objective); SetVehicleParamsEx(GetPlayerVehicleID(playerid), VEHICLE_PARAMS_OFF, lights, alarm, doors, bonnet, boot, objective); ShowPlayerInfoBox(playerid, "> Motor vypnut."); return 1; } } return ShowPlayerInfoBox(playerid, "> Od tohoto vozidla nemáš klíče."); } return 1; } Ahoj, udělal jsem si takový system na motor, ale prostě příkaz jde jen ID 0 jinak to píše všem že nemá klíče od vozidla.. Edited 17. Březen, 2016 by Sc0t Link to comment Share on other sites More sharing options...
0 Lukasz 336 Odesláno: 17. Březen, 2016 Share Odesláno: 17. Březen, 2016 (upraveno) trochu jsem to upravil.. CMD:motor(playerid, params[]) { if(!IsPlayerInAnyVehicle(playerid)) return (nesedí ve vozidle); // doplň nějakou zprávu, že nesedí vůbec ve vozidle new jmeno[MAX_PLAYER_NAME]; // tu bys mohl mít MAX_PLAYER_NAME + 1 ještě pro null ^^ new vehicle = GetPlayerVehicleID(playerid); // zjistíme ID ve kterém sedí for fun GetPlayerName(playerid, jmeno, MAX_PLAYER_NAME); new lights, alarm, doors, bonnet, boot, objective; // šetřílek ušetří jednu proměnnou (engine) for(new i = 0; i < sizeof(Vozidlo); i++) { if(Vozidlo[i][id_x] != vehicle) continue; // pokud se id vozidla neshoduje s tím, ve kterém sedí.. if(!strcmp(Vozidlo[i][majitel], jmeno, true)) // pokud je stejné jméno majitele { if(!Vozidlo[i][c_motor]) // následujou nějaké tvoje věci.. { format(str, sizeof(str), "* %s dává klíček do zapalování, otáčí s ním, čímž zapíná motor.", RJmeno(playerid)); ProxDetector(30, playerid, str, 0x64E375FF, 0x64E375FF, 0x64E375FF, 0x64E375FF, 0x64E375FF); GetVehicleParamsEx(GetPlayerVehicleID(playerid), lights, lights, alarm, doors, bonnet, boot, objective); SetVehicleParamsEx(GetPlayerVehicleID(playerid), VEHICLE_PARAMS_ON, lights, alarm, doors, bonnet, boot, objective); ShowPlayerInfoBox(playerid, "> Motor nastartovan."); format(str1, sizeof(str1), "* Motor nastartován (( %s ))", RJmeno(playerid)); ProxDetector(30, playerid, str1, 0x64C3E3FF, 0x64C3E3FF, 0x64C3E3FF, 0x64C3E3FF, 0x64C3E3FF); } else { format(str, sizeof(str), "* %s otáčí klíčkem, čímž vypíná motor a vytahuje klíček ze zapalování.", RJmeno(playerid)); ProxDetector(30, playerid, str, 0x64E375FF, 0x64E375FF, 0x64E375FF, 0x64E375FF, 0x64E375FF); format(str1, sizeof(str1), "* Motor vypnut (( %s ))", RJmeno(playerid)); ProxDetector(30, playerid, str1, 0x64C3E3FF, 0x64C3E3FF, 0x64C3E3FF, 0x64C3E3FF, 0x64C3E3FF); GetVehicleParamsEx(GetPlayerVehicleID(playerid), lights, lights, alarm, doors, bonnet, boot, objective); SetVehicleParamsEx(GetPlayerVehicleID(playerid), VEHICLE_PARAMS_OFF, lights, alarm, doors, bonnet, boot, objective); ShowPlayerInfoBox(playerid, "> Motor vypnut."); } Vozidlo[i][c_motor] = !Vozidlo[i][c_motor]; // z 0 na 1 a z 1 na 0 return 1; // vrátíme 1, protože jsme nalezli naše vozidlo ^^ } break; // můžem rovnou vrátit ShowPlayerInfoBox( nemá klíče ).. nalezli jsme vozidlo, ale nepatří mu } return ShowPlayerInfoBox(playerid, "> Od tohoto vozidla nemáš klíče."); // nenalezli jsme vozidlo ve kterém sedí } Jinak problém je nejspíš v return ShowPlayerInfoBox(playerid, "> Od tohoto vozidla nemáš klíče."); ukončuješ tím celý cyklus, když ještě nemáš otestované všechny vozidla (moje verze to má opravené) Edited 17. Březen, 2016 by Lukasz Link to comment Share on other sites More sharing options...
0 ATomas 291 Odesláno: 18. Březen, 2016 Share Odesláno: 18. Březen, 2016 break; // můžem rovnou vrátit ShowPlayerInfoBox( nemá klíče ).. nalezli jsme vozidlo, ale nepatří mu Zde bych uplne nesouhlasil, predpokladam ze ma na serveru nekolik vozidel a hrac muze mit 0 az n vozidel. tzn pokud najdes jineho majitele, tak to nezmena, ze hrac nemuze byt majitelem jineho vozidla. Ovsem pokud to ma udelane ze kazdy hrac muze byt majitelem maximalne jednoho vozidla, jde cely kod napsat bez toho cyklu. Link to comment Share on other sites More sharing options...
0 Stellet 7 Odesláno: 18. Březen, 2016 Author Share Odesláno: 18. Březen, 2016 Jeden hráč může mít více vozidel. Link to comment Share on other sites More sharing options...
0 ATomas 291 Odesláno: 18. Březen, 2016 Share Odesláno: 18. Březen, 2016 (upraveno) CMD:motor(playerid, params[]) { if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,-1,"Nejsi v aute"); new jmeno[MAX_PLAYER_NAME],vehicleid = GetPlayerVehicleID(playerid); GetPlayerName(playerid, jmeno, MAX_PLAYER_NAME); if(Vozidlo[vehicleid][majitel][0] == 0 || strcmp(Vozidlo[vehicleid][majitel],jmeno,true) != 0) return ShowPlayerInfoBox(playerid, "> Od tohoto vozidla nemáš klíče."); else if(!Vozidlo[vehicleid][c_motor]) { format(str, sizeof(str), "* %s dává klíček do zapalování, otáčí s ním, čímž zapíná motor.", RJmeno(playerid)); ProxDetector(30, playerid, str, 0x64E375FF, 0x64E375FF, 0x64E375FF, 0x64E375FF, 0x64E375FF); format(str1, sizeof(str1), "* Motor nastartován (( %s ))", RJmeno(playerid)); ProxDetector(30, playerid, str1, 0x64C3E3FF, 0x64C3E3FF, 0x64C3E3FF, 0x64C3E3FF, 0x64C3E3FF); ShowPlayerInfoBox(playerid, "> Motor nastartovan."); new lights, alarm, doors, bonnet, boot, objective; GetVehicleParamsEx(GetPlayerVehicleID(playerid), lights, lights, alarm, doors, bonnet, boot, objective); SetVehicleParamsEx(GetPlayerVehicleID(playerid), VEHICLE_PARAMS_ON, lights, alarm, doors, bonnet, boot, objective); }else{ format(str, sizeof(str), "* %s otáčí klíčkem, čímž vypíná motor a vytahuje klíček ze zapalování.", RJmeno(playerid)); ProxDetector(30, playerid, str, 0x64E375FF, 0x64E375FF, 0x64E375FF, 0x64E375FF, 0x64E375FF); format(str1, sizeof(str1), "* Motor vypnut (( %s ))", RJmeno(playerid)); ProxDetector(30, playerid, str1, 0x64C3E3FF, 0x64C3E3FF, 0x64C3E3FF, 0x64C3E3FF, 0x64C3E3FF); ShowPlayerInfoBox(playerid, "> Motor vypnut."); new lights, alarm, doors, bonnet, boot, objective; GetVehicleParamsEx(GetPlayerVehicleID(playerid), lights, lights, alarm, doors, bonnet, boot, objective); SetVehicleParamsEx(GetPlayerVehicleID(playerid), VEHICLE_PARAMS_OFF, lights, alarm, doors, bonnet, boot, objective); } Vozidlo[vehicleid][c_motor] = !Vozidlo[vehicleid][c_motor]; // z 0 na 1 a z 1 na 0 return 1; } tady jsem to zoptimalizoval vzhledem k tomu ze porovnavame pouze vozidlo, ve kterem sedi, neni potreba cyklus Edited 18. Březen, 2016 by ATomas Link to comment Share on other sites More sharing options...
0 Lukasz 336 Odesláno: 18. Březen, 2016 Share Odesláno: 18. Březen, 2016 (upraveno) Zde s tebou nesouhlasim ATomasi. Breaknul jsem cyklus, protoze jsme nalezli vozidlo ve kterem sedi, ale nepatri mu. Nebude sedet uz v jinem vozidle, proto si muzeme dovolit vyskocit z cyklu. Moje reseni je tedy spravne. Resil bych to asi jako ty, ale autor topicu tam ma nejaky svuj system a nevim, jestli se index rovna id vozidla. V enumu ma na id vozidel 'id_x', takze jsem predpokladal, ze nemuzu pro spravnou funkcnost dosadit za index vehicleid. Edited 18. Březen, 2016 by Lukasz Link to comment Share on other sites More sharing options...
0 ATomas 291 Odesláno: 18. Březen, 2016 Share Odesláno: 18. Březen, 2016 (upraveno) Zde s tebou nesouhlasim ATomasi. Breaknul jsem cyklus, protoze jsme nalezli vozidlo ve kterem sedi, ale nepatri mu. Nebude sedet uz v jinem vozidle, proto si muzeme dovolit vyskocit z cyklu. Pravda, prehledl jsem tu podminku, nepredpokladal jsem ze v cyklu budes hledat jestli se shoduje jedno auto, kdyz k nemu muzes ihned pristoupit Edited 18. Březen, 2016 by ATomas Link to comment Share on other sites More sharing options...
0 Lukasz 336 Odesláno: 18. Březen, 2016 Share Odesláno: 18. Březen, 2016 (upraveno) To jestli k nemu muzes pristoupit rovnou ale nevis. Nevidis zpusob vytvareni. Indexy nemusi odpovidat id vozidlu.. // Je to normalni primo dosazovat za index vehicleid, ale autor ma v poli ulozene i id vozidla, takze jsem myslel (myslim), ze id neodpovidaji indexum a ma to nejak sprehazene. Pokud tomu tak neni, pouzij ATomasovo reseni. Edited 18. Březen, 2016 by Lukasz Link to comment Share on other sites More sharing options...
Dotaz
Stellet 7
Ahoj, udělal jsem si takový system na motor, ale prostě příkaz jde jen ID 0 jinak to píše všem že nemá klíče od vozidla..
Edited by Sc0tLink to comment
Share on other sites
7 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