arci224 11 Odesláno: 5. Březen, 2017 Share Odesláno: 5. Březen, 2017 Popis problému: Zdravím mam problém, mam script na výplatu který by měl fungovat v pawno to nevyhazuje žádný error, jenže udělal jsem si debug pomocí čísel kam se to dostane, ale dle všeho to nefunguje i když pawno nevyhazuje ž´dnou chybu Chyby/varování kompilátoru a při běhu: -- Kód: [spoiler][code=auto:0] forward DoPaycheck(simulation); public DoPaycheck(simulation){ new HELP[300], str[1024], line[128]; new DBResult:result; // Výběr platů z DB new paycheck[MAX_TEAMS][PAY_TYPE]; new Float:payed[MAX_TEAMS]; result = Query(vyplaty, "SELECT * FROM vyplaty"); for(results){ db_get_field_assoc(result, "id", HELP, 30);new teamid = strval(HELP); db_get_field_assoc(result, "start", HELP, 30); paycheck[teamid][BASEmin] = floatstr(HELP); db_get_field_assoc(result, "konec", HELP, 30); paycheck[teamid][BASEmax] = floatstr(HELP); db_get_field_assoc(result, "leader_start", HELP, 30); paycheck[teamid][LEADERmin] = floatstr(HELP); db_get_field_assoc(result, "leader_konec", HELP, 30); paycheck[teamid][LEADERmax] = floatstr(HELP); db_next_row(result); } db_free_result(result); // Výběr ranků new rank[MAX_TEAMS][MAX_RANKS][RANK_TYPE]; //new teamid, rankid; result = Query(sql, "SELECT * FROM ranklist"); for(results){ db_get_field_assoc(result, "team", HELP, 30); new teamid = strval(HELP); db_get_field_assoc(result, "rank", HELP, 30); new rankid = strval(HELP); db_get_field_assoc(result, "plat", HELP, 30); rank[teamid][rankid][RATIO] = floatstr(HELP); //db_get_field_assoc(result, "name", rank[teamid][rankid][NAME], 64); db_next_row(result); } // Sem se to nedostane SendClientMessageToAll(-1,"3"); db_free_result(result); // Výplatní páska for(new i=0;i99){ addprem = 1; } printf(" [PAYCHECK] Výplata pro %s[id:%d;teamid:%d;rankid:%d;duty:%.2f%%]", PlayerName(i), i, teamid, rankid, duty); new Float:money = paycheck[teamid][BASEmin]+float(random(floatround(paycheck[teamid][BASEmax]-paycheck[teamid][BASEmin]))); new Float:premie = (money*rank[teamid][rankid][RATIO]); premie = premie*addprem; new Float:hruba_mzda = money+premie; money=money+premie; new Float:socialni = money*0.25; new Float:zdravotni = money*0.09; new Float:superhruba = money+socialni+zdravotni; new Float:dane = superhruba*0.15; if(dane>=92.5) dane=dane-92.5; else dane=0.0; new Float:socialni_zamestnancem = money*0.065; new Float:zdravotni_zamestnancem = money*0.045; new Float:cista_mzda = hruba_mzda-dane-socialni_zamestnancem-zdravotni_zamestnancem; if(!simulation){ if(cista_mzda=10000) SetPlayerAchieved(i, 17); if(actualMoney>=15000) SetPlayerAchieved(i, 18); if(actualMoney>=20000) SetPlayerAchieved(i, 19); if(actualMoney>=50000) SetPlayerAchieved(i, 20); } else { PayBillsSIM(i); PaySubscribe(i, 1); } format(line, 128, "hrubá mzda: {f1c40f}${AAAAAA}%.2f", hruba_mzda);format(str, sizeof(str), "%s\n{ecf0f1}%s", str, line); format(line, 128, "Hodnostní ohodnocení: {f1c40f}${AAAAAA}%.2f", premie);format(str, sizeof(str), "%s\n{ecf0f1}%s", str, line); format(line, 128, "Zdravotní pojištění: {f1c40f}${AAAAAA}%.2f", zdravotni);format(str, sizeof(str), "%s\n{ecf0f1}%s", str, line); format(line, 128, " hrazeno zaměstnancem: {f1c40f}${AAAAAA}%.2f", zdravotni_zamestnancem);format(str, sizeof(str), "%s\n{ecf0f1}%s", str, line); format(line, 128, "Sociální pojištění: {f1c40f}${AAAAAA}%.2f", socialni);format(str, sizeof(str), "%s\n{ecf0f1}%s", str, line); format(line, 128, " hrazeno zaměstnancem: {f1c40f}${AAAAAA}%.2f", socialni_zamestnancem);format(str, sizeof(str), "%s\n{ecf0f1}%s", str, line); format(line, 128, "Daň z příjmu: {f1c40f}${AAAAAA}%.2f", dane);format(str, sizeof(str), "%s\n{ecf0f1}%s", str, line); format(line, 128, "");format(str, sizeof(str), "%s\n%s", str, line); format(line, 128, "Čistá mzda: {f1c40f}${AAEEAA}%.2f", cista_mzda);format(str, sizeof(str), "%s\n{ecf0f1}%s", str, line); SetPVarString(i, "paycheck_message", str); printf(" Výplatní zpráva: %s", str); print(" [/PAYCHECK]"); format(str, sizeof(str), ""); SendOOCMessage(i, OOC_TYPE_INFO, "Přišla ti výplata, /vyplata"); } SendClientMessageToAll(-1,"4"); if(!simulation){ new query[250]; Query(vyplaty, "DELETE FROM vyplata"); format(query, 250, "INSERT INTO vyplata VALUES (%d)", gettime()+60*60); Query(vyplaty, query); OnPaycheck(); } SendClientMessageToAll(-1,"5"); return 1; } [/code] [/spoiler] Dodatečné poznámky: #define results new i=0;i Link to comment Share on other sites More sharing options...
0 Globální moderátor HighPrint 177 Odesláno: 5. Březen, 2017 Globální moderátor Share Odesláno: 5. Březen, 2017 Z popisu jsem moc nepochopil v čem je chyba Takže celý script nefunguje vůbec? Link to comment Share on other sites More sharing options...
0 arci224 11 Odesláno: 5. Březen, 2017 Author Share Odesláno: 5. Březen, 2017 No teoreticky nefunguje, script se dostane po řádek kde je // Sem se to nedostane a dál se to nedostane. Takže se ta výplata nedá ale Pawno žádný error nepíše. Link to comment Share on other sites More sharing options...
0 Globální moderátor HighPrint 177 Odesláno: 5. Březen, 2017 Globální moderátor Share Odesláno: 5. Březen, 2017 No napadá mě, že tam může zlobit: rank[teamid][rankid][RATIO] = floatstr(HELP); Stáhni si crashdetect, jestli tam není náhodou nějaký run-time error Link to comment Share on other sites More sharing options...
0 arci224 11 Odesláno: 5. Březen, 2017 Author Share Odesláno: 5. Březen, 2017 Vyhodí to [13:07:06] SELECT * FROM vyplaty [13:07:06] SELECT * FROM ranklist [13:07:06] [debug] Run time error 4: "Array index out of bounds" [13:07:06] [debug] Accessing element at index 100 past array upper bound 24 [13:07:06] [debug] AMX backtrace: [debug] #0 000601a8 in public DoPaycheck (0x00000000) from job.amx je to vypsáno od mysql záznamu výše od toho nic není Link to comment Share on other sites More sharing options...
0 Globální moderátor HighPrint 177 Odesláno: 5. Březen, 2017 Globální moderátor Share Odesláno: 5. Březen, 2017 Oukej, tak se už blížíme k finále Co jsou zač tyto konstanty? MAX_TEAMS, MAX_RANKS, RANKS_TYPE Link to comment Share on other sites More sharing options...
0 arci224 11 Odesláno: 5. Březen, 2017 Author Share Odesláno: 5. Březen, 2017 #define MAX_TEAMS 35 #define MAX_RANKS 25 enum RANK_TYPE{Float:RATIO}; Link to comment Share on other sites More sharing options...
0 Globální moderátor HighPrint 177 Odesláno: 5. Březen, 2017 Globální moderátor Share Odesláno: 5. Březen, 2017 (upraveno) [13:07:06] [debug] Accessing element at index 100 past array upper bound 24 #define MAX_RANKS 25 Laicky přeloženo: Přístup k prvku na indexu 100 přes horní mez 24. Tady máš odpověď. V tabulce ranklist máš tým, který má rank 100 (edit poznámka: teda aspoň si to tak interpretuju co s tím chceš dělat). Technicky řečeno, přesahuješ velikost pole rank, tím že tam dosazuješ rank[...][100][...].... Oprav to buď tím, že zvýšíš MAX_RANK na 101 (idx od 0) nebo přidáš podmínku, že pokud přesahuje 25 tak se nastaví na 24 (idx od 0) Edited 5. Březen, 2017 by HighPrint 3 Link to comment Share on other sites More sharing options...
0 arci224 11 Odesláno: 5. Březen, 2017 Author Share Odesláno: 5. Březen, 2017 (upraveno) Děkuji, funguje. To by mě nenapadlo že v tomto bude chyba Edited 5. Březen, 2017 by arci224 Link to comment Share on other sites More sharing options...
0 Stellet 7 Odesláno: 6. Březen, 2017 Share Odesláno: 6. Březen, 2017 Tak doufám, že se ti mód denche líbí #NenapadnejKod 1 Link to comment Share on other sites More sharing options...
0 Xchos 1 Odesláno: 7. Březen, 2017 Share Odesláno: 7. Březen, 2017 Ono kdyby si ten mód znal, tak víš jaké má omezení .. Už ti stihli odpovědět ostatní. Stačilo mi napsat na FB a já bych ti s mým starým ukradeným scriptem rád pomohl. 1 Link to comment Share on other sites More sharing options...
0 arci224 11 Odesláno: 7. Březen, 2017 Author Share Odesláno: 7. Březen, 2017 Ono já ho dostal od Wolfa který nevím jak na něj přišel ale napíšu ti na FB a dohodneme se ale ty scripty nepoběží u mně Link to comment Share on other sites More sharing options...
0 Globální moderátor HighPrint 177 Odesláno: 7. Březen, 2017 Globální moderátor Share Odesláno: 7. Březen, 2017 (upraveno) O jaký mód se jedná? edit: ok už jsem si to vypátral Edited 7. Březen, 2017 by HighPrint Link to comment Share on other sites More sharing options...
Dotaz
arci224 11
Popis problému:
Zdravím mam problém, mam script na výplatu který by měl fungovat v pawno to nevyhazuje žádný error, jenže udělal jsem si debug pomocí čísel kam se to dostane, ale dle všeho to nefunguje i když pawno nevyhazuje ž´dnou chybu
Chyby/varování kompilátoru a při běhu:
--
Kód:
Dodatečné poznámky:
Link to comment
Share on other sites
12 odpovědí na tuto otázku
Recommended Posts