mourison 0 Odesláno: 25. Únor, 2017 Share Odesláno: 25. Únor, 2017 Popis problému: Zdravím, z nějakého důvodu, který nevidím, se mi cyklus nedostane za podmínku if(oznauto[i]) Došel sjem k tomu, pomocí výpisu čísel.Moc děkuji za radu Chyby/varování kompilátoru a při běhu:--Kód: //Nahoře new bool:oznauto[MAX_VEHICLES]; Stock stock SaveAllVehicles(playerid) { new saveindex = 0; new cesta[512]; format(cesta, sizeof(cesta), "/Auta/%d.sav", saveindex); SCM(playerid,T_GREEN, "1"); for(new i = 0; i < MAX_VEHICLES; i++) { SCM(playerid,T_GREEN, "2"); if(oznauto[i]) { SCM(playerid,T_GREEN, "3"); if(!dini_Exists(cesta))// ak hráčov súbor neexistuje( preto tam je ! ) { dini_Create(cesta);// tak ho vytvoríme } else// ale ak existuje { SCM(playerid,T_GREEN, "SAVING"); dini_IntSet(cesta, "Model",AutoData[i][model]); dini_FloatSet(cesta, "X", AutoData[i][xspawn]); dini_FloatSet(cesta, "Y", AutoData[i][xspawn]); dini_FloatSet(cesta, "Z", AutoData[i][xspawn]); dini_FloatSet(cesta, "angle", AutoData[i][anglespawn]); dini_Set(cesta, "Barva1",AutoData[i][col1]); dini_Set(cesta, "Barva2",AutoData[i][col2]); dini_FloatSet(cesta, "RespawnTime", AutoData[i][respawn]); dini_Set(cesta, "Majitel", AutoData[i][majitel]); saveindex ++; } } } } //Vytvořenému auto přidám oznauto na true //CreateVehicleEx new carid = ZiskejAutoSlot(); oznauto[carid] = true; CreateVehicle(modelid, x, y, z, angle, color1, color2, respawntime); //Stock NastaveníSlotu stock ZiskejAutoSlot() { for(new i = 0; i < sizeof(oznauto); i++) { if(!oznauto[i]) return i; } return -1; } Dodatečné poznámky:-- Link to comment Share on other sites More sharing options...
0 Administrátor Lucifer Morningstar 86 Odesláno: 25. Únor, 2017 Administrátor Share Odesláno: 25. Únor, 2017 Sekcia kód, je automaticky v BBCode Spoiler a Code, netreba ich pridávať. Pre popísanie miesta chyby použite komentár //. Link to comment Share on other sites More sharing options...
0 Scydo 397 Odesláno: 25. Únor, 2017 Share Odesláno: 25. Únor, 2017 Pár úprav: - Máš příliš mnoho znaků pro cestu na ukládání. Bohatě stačí 51 (50 + 1). Ba dokonce i ta tvá cesta má jen 12/13+1 znaků. - Jako dini je dobrý začátek, ale doporučil bych ti spíše dof2. Je to prakticky to samé, akorát modernější a rychlejší. - K čemu je proměnná saveindex? Pokud je to id každého vozidla, co se ukládá, tak na to můžeš použít proměnnou i. - Navíc saveindex sice přiřazuješ po každém cyklu hodnotu, ale nic se nestane, protože s ní pracuješ až nad ní. Nejdříve bych doporučil zjistit, jakmile najede na id nějakého vozidla, jestliže vůbec existuje. Na to může použít IsValidVehicle. Aby neprojížděl třeba tisícovku neexistujících vozidel úplně zbytečně. Zkus tohle: dini způsob stock SaveAllVehicles(playerid) { new cesta[51]; for(new i = 0; i < MAX_VEHICLES; i++) { if (IsValidVehicle(i)) { if(oznauto[i]) { format(cesta, sizeof(cesta), "/Auta/%d.sav", i); if(!dini_Exists(cesta)) dini_Create(cesta);// tak ho vytvoríme dini_IntSet(cesta, "Model",AutoData[i][model]); dini_FloatSet(cesta, "X", AutoData[i][xspawn]); dini_FloatSet(cesta, "Y", AutoData[i][xspawn]); dini_FloatSet(cesta, "Z", AutoData[i][xspawn]); dini_FloatSet(cesta, "angle", AutoData[i][anglespawn]); dini_Set(cesta, "Barva1",AutoData[i][col1]); dini_Set(cesta, "Barva2",AutoData[i][col2]); dini_FloatSet(cesta, "RespawnTime", AutoData[i][respawn]); dini_Set(cesta, "Majitel", AutoData[i][majitel]); } } } } dof2 způsob stock SaveAllVehicles(playerid) { new cesta[51]; for(new i = 0; i < MAX_VEHICLES; i++) { if (IsValidVehicle(i)) { if(oznauto[i]) { format(cesta, sizeof(cesta), "/Auta/%d.sav", i); if(!DOF2_FileExists(cesta)) DOF2_CreateFile(cesta); DOF2_SetInt(cesta, "Model",AutoData[i][model]); DOF2_SetFloat(cesta, "X", AutoData[i][xspawn]); DOF2_SetFloat(cesta, "Y", AutoData[i][xspawn]); DOF2_SetFloat(cesta, "Z", AutoData[i][xspawn]); DOF2_SetFloat(cesta, "angle", AutoData[i][anglespawn]); DOF2_SetString(cesta, "Barva1",AutoData[i][col1]); DOF2_SetString(cesta, "Barva2",AutoData[i][col2]); DOF2_SetFloat(cesta, "RespawnTime", AutoData[i][respawn]); DOF2_SetString(cesta, "Majitel", AutoData[i][majitel]); DOF2_SaveFile(); } } } } Link to comment Share on other sites More sharing options...
0 ATomas 290 Odesláno: 27. Únor, 2017 Share Odesláno: 27. Únor, 2017 (upraveno) - Nejdriv bych ti doporucil aby sis na local svr poridil crashdetect, je to sikovna vecicka, ktera ti dokaze odkryt runtime chybu, tzn chybu ktera ti zastavi kod. napr zasah na neplatny index pole atp... - Druha varianta, ktera mne napada je ta, ze si nekde to pole vynulujes a tedy ten cyklus ti to neprojde (napr pokud to mas v OnPlayerDisconnect tak si dej pozor jestli to opravdu nejdriv ukladas a az potom nulujes promenou). Sice nevim jaky presny ucel tvuj kod ma, ale napadlo mne lepsi reseni, ktere mozna i vyresi problem: new bool:oznauto[MAX_VEHICLES] = {-1,...}; stock SaveAllVehicles(playerid) { new saveindex = 0,cesta[128]; format(cesta, sizeof(cesta), "/Auta/%d.sav", saveindex);//POZOR zde bude vzdy string "/Auta/0.sav" !!! for(new i = 0; i < MAX_VEHICLES; i++) { if(oznauto[i] != -1) { //format(cesta, sizeof(cesta), "/Auta/%d.sav", saveindex);//nema to byt na teto urovni? if(!dini_Exists(cesta)) dini_Create(cesta); //zde jsem odmazal else, sice si dini uz moc nepamatuju ale dini_create vytvori prazdny soubor a s tim else by tam nevlozil obsah dini_IntSet(cesta, "Model",AutoData[i][model]); dini_FloatSet(cesta, "X", AutoData[i][xspawn]); dini_FloatSet(cesta, "Y", AutoData[i][xspawn]); dini_FloatSet(cesta, "Z", AutoData[i][xspawn]); dini_FloatSet(cesta, "angle", AutoData[i][anglespawn]); dini_Set(cesta, "Barva1",AutoData[i][col1]); dini_Set(cesta, "Barva2",AutoData[i][col2]); dini_FloatSet(cesta, "RespawnTime", AutoData[i][respawn]); dini_Set(cesta, "Majitel", AutoData[i][majitel]); saveindex++; } } } stock CreateVehicleForPlayer(playerid,modelid, x, y, z, angle, color1, color2, respawntime) { new vehicleid = CreateVehicle(modelid, x, y, z, angle, color1, color2, respawntime); if(vehicleid != INVALID_VEHICLE_ID) oznauto[vehicleid] = playerid; return vehicleid; } Navic to ma vyhodu ze podle vehicleid si muzes zjistit kdo je majitelem vytvoreneho vozidla (-1 pokud vozidlo majitele nema) Edited 27. Únor, 2017 by ATomas Link to comment Share on other sites More sharing options...
Dotaz
mourison 0
Popis problému:
Zdravím, z nějakého důvodu, který nevidím, se mi cyklus nedostane za podmínku
Došel sjem k tomu, pomocí výpisu čísel.
Moc děkuji za radu
Chyby/varování kompilátoru a při běhu:
--
Kód:
Dodatečné poznámky:
--
Link to comment
Share on other sites
3 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