Kubko 22 Odesláno: 10. Červen, 2017 Share Odesláno: 10. Červen, 2017 Popis problému: Mám podmienku if a hneď pod ňou else a problém nastáva v tom, že sa mi vyvolá vnútro else aj cez to, že je podmienka nad ním splnená. Akonáhle pridám do toho if bloku nejaký kód, funguje to normálne. Chyby/varování kompilátoru a při běhu: - Kód: [code=:0] public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid) { if(playertextid == MDC_g_sPlayer[playerid][E_MDC_TEXTDRAW][6]) { MDC_Close(playerid, true); return 1; } else if(playertextid == MDC_g_sPlayer[playerid][E_MDC_TEXTDRAW][8]) { MDC_Close(playerid); return 1; } else { for(new i; i < MDC_ITEM_SIZE; i++) { if(playertextid == MDC_g_sPlayer[playerid][E_MDC_TEXTDRAW][i * 2 + 10]) { MDC_Update(playerid, MDC_UPDATE_TECHNIQUE_WIPE_CONTENT, _, i, MDC_g_sPlayer[playerid][E_MDC_CONTENT][i]); return 1; } } switch(MDC_g_sPlayer[playerid][E_MDC_ITEM]) { case MDC_ITEM_LOOK_UP: { switch(MDC_g_sPlayer[playerid][E_MDC_CONTENT][MDC_g_sPlayer[playerid][E_MDC_ITEM]]) { case MDC_CONTENT_SEARCH: { if(playertextid == MDC_g_sPlayer[playerid][E_MDC_TEXTDRAW][21] || playertextid == MDC_g_sPlayer[playerid][E_MDC_TEXTDRAW][23]) { MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_METHOD] = MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_METHOD] == MDC_LOOK_UP_METHOD_PERSON ? MDC_LOOK_UP_METHOD_VEHICLE : MDC_LOOK_UP_METHOD_PERSON; MDC_Update(playerid, MDC_UPDATE_TECHNIQUE_KEEP_CONTENT, _, MDC_ITEM_LOOK_UP, MDC_CONTENT_SEARCH, 29, 52); return 1; } else if(playertextid == MDC_g_sPlayer[playerid][E_MDC_TEXTDRAW][24]) { if((MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_INPUT][0] == EOS && !MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_DATA_LOADED]) || (MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_INPUT][0] != EOS && MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_DATA_LOADED]) || (MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_CACHE] < MDC_LOOK_UP_CACHE_SYNTAX_ERROR)) { MDC_g_sPlayer[playerid][E_MDC_STATE] = MDC_STATE_SUSPENDED; CancelSelectTextDraw(playerid); if(MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_METHOD] == MDC_LOOK_UP_METHOD_PERSON) { ShowPlayerDialog(playerid, MDC_DIALOG_LOOK_UP_INPUT, DIALOG_STYLE_INPUT, "Insert data", "Who are you looking for?", "Search", "Close"); } else { ShowPlayerDialog(playerid, MDC_DIALOG_LOOK_UP_INPUT, DIALOG_STYLE_INPUT, "Insert data", "What plate are you looking for?\n\nFor plate, enter the plate number.\nFor vehicle ID, enter 'id:IDHERE', e.g. 'id:552'", "Search", "Close"); } } return 1; } else if(playertextid == MDC_g_sPlayer[playerid][E_MDC_TEXTDRAW][28] && MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_CACHE] != MDC_LOOK_UP_CACHE_NONE && MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_CACHE] != MDC_LOOK_UP_CACHE_SYNTAX_ERROR) { new bool:refresh_possible ; if(MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_METHOD] == MDC_LOOK_UP_METHOD_PERSON) { if(MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_CACHE] == MDC_LOOK_UP_CACHE_VEHICLE) { refresh_possible = true; } } else { if(MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_CACHE] >= MDC_LOOK_UP_CACHE_ESSENTIAL && MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_CACHE] <= MDC_LOOK_UP_CACHE_ADRESS) { refresh_possible = true; } } if(refresh_possible) { MDC_LookUp(playerid, MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_METHOD], MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_INPUT]); } return 1; } else if(playertextid == MDC_g_sPlayer[playerid][E_MDC_TEXTDRAW][35]) { MDC_Update(playerid, MDC_UPDATE_TECHNIQUE_WIPE_CONTENT, _, MDC_ITEM_LOOK_UP, MDC_CONTENT_ADRESS); return 1; } else if(playertextid == MDC_g_sPlayer[playerid][E_MDC_TEXTDRAW][37]) { if(MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_CACHE] == MDC_LOOK_UP_CACHE_ESSENTIAL) { MDC_Update(playerid, MDC_UPDATE_TECHNIQUE_WIPE_CONTENT, _, MDC_ITEM_LOOK_UP, MDC_CONTENT_LICENSE); } else if(MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_CACHE] == MDC_LOOK_UP_CACHE_ADRESS) { MDC_Update(playerid, MDC_UPDATE_TECHNIQUE_WIPE_CONTENT, _, MDC_ITEM_LOOK_UP, MDC_CONTENT_ADRESS); } return 1; } else if(playertextid == MDC_g_sPlayer[playerid][E_MDC_TEXTDRAW][39]) { if(MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_CACHE] == MDC_LOOK_UP_CACHE_ESSENTIAL) { } else {//Toto je ten else printf("%i", MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_CACHE]); //Vyprintuje 1, čo je rovné MDC_LOOK_UP_CACHE_ESSENTIAL MDC_Update(playerid, MDC_UPDATE_TECHNIQUE_WIPE_CONTENT, _, MDC_ITEM_LOOK_UP, MDC_CONTENT_LICENSE); } return 1; } else if(playertextid == MDC_g_sPlayer[playerid][E_MDC_TEXTDRAW][48] || playertextid == MDC_g_sPlayer[playerid][E_MDC_TEXTDRAW][54]) { if(!MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_RECORD_CHARGE_NUM]) { MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_RECORD_CHARGE_NUM] = MDC_LOOK_UP_RECORD_PER_PAGE_COUNT; } else { MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_RECORD_CHARGE_NUM] = MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_RECORD_CHARGE_NUM] - MDC_LOOK_UP_RECORD_PER_PAGE_COUNT - (MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_RECORD_CHARGE_NUM] % MDC_LOOK_UP_RECORD_PER_PAGE_COUNT); } MDC_Update(playerid, MDC_UPDATE_TECHNIQUE_KEEP_CONTENT, _, MDC_ITEM_LOOK_UP, MDC_CONTENT_SEARCH, 29); return 1; } else if(playertextid == MDC_g_sPlayer[playerid][E_MDC_TEXTDRAW][49] || playertextid == MDC_g_sPlayer[playerid][E_MDC_TEXTDRAW][55]) { MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_RECORD_CHARGE_NUM] += MDC_LOOK_UP_RECORD_PER_PAGE_COUNT; MDC_Update(playerid, MDC_UPDATE_TECHNIQUE_KEEP_CONTENT, _, MDC_ITEM_LOOK_UP, MDC_CONTENT_SEARCH, 29); return 1; } } case MDC_CONTENT_ADRESS: { if(playertextid == MDC_g_sPlayer[playerid][E_MDC_TEXTDRAW][20]) { MDC_Update(playerid, MDC_UPDATE_TECHNIQUE_WIPE_CONTENT, _, MDC_ITEM_LOOK_UP, MDC_CONTENT_SEARCH); return 1; } else if(playertextid == MDC_g_sPlayer[playerid][E_MDC_TEXTDRAW][30]) { if(!MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_ADRESS_NUM]) { MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_ADRESS_NUM] = MDC_LOOK_UP_ADRESS_PER_PAGE_COUNT; } else { MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_ADRESS_NUM] = MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_ADRESS_NUM] - MDC_LOOK_UP_ADRESS_PER_PAGE_COUNT - (MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_ADRESS_NUM] % MDC_LOOK_UP_ADRESS_PER_PAGE_COUNT); } MDC_Update(playerid, MDC_UPDATE_TECHNIQUE_KEEP_CONTENT, _, MDC_ITEM_LOOK_UP, MDC_CONTENT_ADRESS, 32, 33, 34); return 1; } else if(playertextid == MDC_g_sPlayer[playerid][E_MDC_TEXTDRAW][31]) { MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_ADRESS_NUM] += MDC_LOOK_UP_ADRESS_PER_PAGE_COUNT; MDC_Update(playerid, MDC_UPDATE_TECHNIQUE_KEEP_CONTENT, _, MDC_ITEM_LOOK_UP, MDC_CONTENT_ADRESS, 32, 33, 34); return 1; } for(new i; i < 3; i++) { if(playertextid == MDC_g_sPlayer[playerid][E_MDC_TEXTDRAW][i * 2 + 25]) { MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_ADRESS_SELECTED] = MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_ADRESS_NUM] + i; if((MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_ADRESS_POS_X][MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_ADRESS_SELECTED]] >= 132.0 && MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_ADRESS_MAP]) || (MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_ADRESS_POS_X][MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_ADRESS_SELECTED]] < 132.0 && !MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_ADRESS_MAP])) { MDC_Update(playerid, MDC_UPDATE_TECHNIQUE_KEEP_CONTENT, _, MDC_ITEM_LOOK_UP, MDC_CONTENT_ADRESS, 32, 33); } else { MDC_Update(playerid, MDC_UPDATE_TECHNIQUE_KEEP_CONTENT, _, MDC_ITEM_LOOK_UP, MDC_CONTENT_ADRESS); } return 1; } } } case MDC_CONTENT_LICENSE: { if(playertextid == MDC_g_sPlayer[playerid][E_MDC_TEXTDRAW][20]) { MDC_Update(playerid, MDC_UPDATE_TECHNIQUE_WIPE_CONTENT, _, MDC_ITEM_LOOK_UP, MDC_CONTENT_SEARCH); return 1; } else if(playertextid == MDC_g_sPlayer[playerid][E_MDC_TEXTDRAW][30]) { MDC_g_sPlayer[playerid][E_MDC_STATE] = MDC_STATE_SUSPENDED; CancelSelectTextDraw(playerid); strcpy(MDC_g_sPlayer[playerid][E_MDC_STRING_SECONDARY], "How many hours should 's license be suspended for?", MDC_STRING_SECONDARY_SIZE); strins(MDC_g_sPlayer[playerid][E_MDC_STRING_SECONDARY], MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_INPUT], 22, MDC_STRING_SECONDARY_SIZE); ShowPlayerDialog(playerid, MDC_DIALOG_LOOK_UP_LICENSE_SUSPEND, DIALOG_STYLE_INPUT, "Suspension", MDC_g_sPlayer[playerid][E_MDC_STRING_SECONDARY], "Suspend", "Cancel"); return 1; } else if(playertextid == MDC_g_sPlayer[playerid][E_MDC_TEXTDRAW][32]) { if(MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_LICENSE_STATE][0] == 2) { MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_LICENSE_STATE][0] = 1; MDC_Update(playerid, MDC_UPDATE_TECHNIQUE_KEEP_CONTENT, _, MDC_ITEM_LOOK_UP, MDC_CONTENT_LICENSE); } else { MDC_g_sPlayer[playerid][E_MDC_STATE] = MDC_STATE_SUSPENDED; CancelSelectTextDraw(playerid); strcpy(MDC_g_sPlayer[playerid][E_MDC_STRING_SECONDARY], "Are you sure you want to write a warning on 's driving license?", MDC_STRING_SECONDARY_SIZE); strins(MDC_g_sPlayer[playerid][E_MDC_STRING_SECONDARY], MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_INPUT], 44, MDC_STRING_SECONDARY_SIZE); ShowPlayerDialog(playerid, MDC_DIALOG_LOOK_UP_LICENSE_WARN, DIALOG_STYLE_MSGBOX, "Confirmation", MDC_g_sPlayer[playerid][E_MDC_STRING_SECONDARY], "Yes", "No"); } return 1; } } } } } } return 0; }[/code] Dodatečné poznámky: - Ten else je označený komentárom Link to comment Share on other sites More sharing options...
0 Hlavní moderátor vEnd 279 Odesláno: 10. Červen, 2017 Hlavní moderátor Share Odesláno: 10. Červen, 2017 Mám podmienku if a hneď pod ňou else a problém nastáva v tom, že sa mi vyvolá vnútro else aj cez to, že je podmienka nad ním splnená. Akonáhle pridám do toho if bloku nejaký kód, funguje to normálne. Pokud v tom if bloku neplánuješ nic mít, je zbytečné to tak používat, stačí přepsat podmínku a else úplně eliminovat: if(MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_CACHE] != MDC_LOOK_UP_CACHE_ESSENTIAL) // náhrada za else { printf("%i", MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_CACHE]); //Vyprintuje 1, čo je rovné MDC_LOOK_UP_CACHE_ESSENTIAL MDC_Update(playerid, MDC_UPDATE_TECHNIQUE_WIPE_CONTENT, _, MDC_ITEM_LOOK_UP, MDC_CONTENT_LICENSE); } Link to comment Share on other sites More sharing options...
0 Kubko 22 Odesláno: 10. Červen, 2017 Author Share Odesláno: 10. Červen, 2017 (upraveno) Práve, že plánujem, ale ma to dosť zaujalo , pretože keď som skúsil rovnakú vec vyvolať inde, napríklad OnPlayerSpawn, či dokonca main, funguje to normálne.Zaujímavé, že keď si tú hodnotu vyprintujem pred tou podmienkou, tak to funguje tiež správne - else sa nevyvolá. else if(playertextid == MDC_g_sPlayer[playerid][E_MDC_TEXTDRAW][39]) { printf("%i", MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_CACHE]); //Vyprintuje 1, čo je rovné MDC_LOOK_UP_CACHE_ESSENTIAL if(MDC_g_sPlayer[playerid][E_MDC_LOOK_UP_CACHE] == MDC_LOOK_UP_CACHE_ESSENTIAL) { } else {//Toto je ten else MDC_Update(playerid, MDC_UPDATE_TECHNIQUE_WIPE_CONTENT, _, MDC_ITEM_LOOK_UP, MDC_CONTENT_LICENSE); } return 1; } Edited 10. Červen, 2017 by Kubko Link to comment Share on other sites More sharing options...
0 Hlavní moderátor vEnd 279 Odesláno: 10. Červen, 2017 Hlavní moderátor Share Odesláno: 10. Červen, 2017 Je divné, že by se to tak chovalo jen v tomto případě. V něčem ten háček být musí. Každopádně, chápu to správně, že o tom teď debatujeme jen ze zvědavosti a problém vlastně nemáš? Link to comment Share on other sites More sharing options...
0 Kubko 22 Odesláno: 10. Červen, 2017 Author Share Odesláno: 10. Červen, 2017 (upraveno) V podstate sa to dá nazvať tou zvedavosťou. Ale mňa to maximálne znepokojuje, pretože sa snažím prísť na príčinu, prečo to tam nefunguje ako inde. Teraz som to vyskúšal ešte cez switch a funguje to tiež normálne. Edited 10. Červen, 2017 by Kubko Link to comment Share on other sites More sharing options...
Dotaz
Kubko 22
Popis problému:
Mám podmienku if a hneď pod ňou else a problém nastáva v tom, že sa mi vyvolá vnútro else aj cez to, že je podmienka nad ním splnená. Akonáhle pridám do toho if bloku nejaký kód, funguje to normálne.
Chyby/varování kompilátoru a při běhu:
-
Kód:
Dodatečné poznámky:
- Ten else je označený komentárom
Link to comment
Share on other sites
4 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