Ahoj, tak jsem tady zas. Mám problém se špatně fungujícím dialogem kasy. Stále mi to píše, že v kase nemám dost peněz, i přestože tam jsou. Na testovacím serveru mi to napíše ale i dá ty peníze, de facto se vykoná to, co chci, ale na veřejným, který už narozdíl od testovacího není prázdný to pouze píše tu hlášku a nedá to ani floka. Kontroloval jsem i jestli se hodnota při každé výplatě, kdy chodí i do kasy tržba ukládá. To také dělá, ale špatně. Při vytvoření podniku a upravení ceny například na 1 000 000 to funguje správně, do kasy jde každou hodinu 10 000 podle vzorce (který nejspíš upravím). Ale když k tomu koupím druhý podnik, s cenou třeba 50 000, tak místo aby do jedné kasy šlo 10 000 a do druhé 500, tak v jedné je 10 000 a v druhé 10 500. Dle toho usuzuji, že je chyba v cyklu, ale jak to změnit, aby to fungovalo, nad tím se lámu už hodiny a jsem bezradný. Nejsem sice úplně začátečník, ale nějaké ty mezery ještě mám, tak to prosím berte v úvahu, děkuji. Přiložím pro jistotu úplně vše, co nějak souvisí s kasou. Na požádání můžu poslat i další části, když to pomůže k vyřešení problémů. Budu rád za každou pomoc. :-)
Spoiler
enum{...
DIALOG_KASABIZ,...enum sBiz
{
ID,Owner[MAX_PLAYER_NAME],Name[32],Locked,BKasa,bool:LightsInt,Float:X,Float:Y,Float:Z,Float:A,Interior,Price,Movein[24],Text3D:BizLabel,PickupID}newBiz[BIZ_MAX_ID][sBiz];...
forward LoadBiz(i, name[], value[]);...// Příkaz:
CMD:kasa(playerid,params[]){if(!Player[playerid][Pes]){if(IsPlayerInRangeOfPoint(playerid,2,919.2477,-41.1382,1493.5973)){if(Player[playerid][Faction]== fGOV){
SPD(playerid, DIALOG_MKASA);return1;}elsereturnErrorBox(playerid,"Nejsi ve frakci GOV.");}else{for(new i = BIZ_START_ID; i < BIZ_MAX_ID; i++){if(IsPlayerInRangeOfPoint(playerid,2,Biz[i][X],Biz[i][Y],Biz[i][Z])){new name[MAX_PLAYER_NAME], temp[128];
name =GetName(playerid);if(strcmp(Biz[i][Owner], name,true, MAX_PLAYER_NAME)==0){
format(temp,sizeof(temp),"V kase máte %d$. Zadejte částku jakou si přejete vybrat.",Biz[i][BKasa]);ShowPlayerDialog(playerid, DIALOG_KASABIZ, DIALOG_STYLE_INPUT,"KASA PODNIKU - TRZBA", temp,"Vybrat","Storno");return1;}elsereturnErrorBox(playerid,"Nejsi vlastnikem podniku.");}}}returnErrorBox(playerid,"Tento prikaz ted nemuzes pouzivat.");}elsereturnErrorBox(playerid,"Jsi pes, nemuzes vybirat penize z kasy.");}// Dialogcase DIALOG_KASABIZ:{if(response){if(isnumeric(inputtext)){for(new i = BIZ_START_ID; i < BIZ_MAX_ID; i++){new prachy = strval(inputtext);if(Biz[i][BKasa]>= prachy){new str[80];GivePlayerMoneyEx(playerid, prachy);Biz[i][BKasa]-= prachy;
format(str,sizeof(str),"> Vybral jsi z kasy tržbu v hodnotě %d$.", prachy);
SCM(playerid, INFOCOLOR, str);}elsereturnErrorBox(playerid,"Tolik penez v kase nemas");}}elsereturnErrorBox(playerid,"Hodnota musi byt ciselna");}}// OnPlayerKeyStateChange - KEY_YES - Vstupní poplatekfor(new i = BIZ_START_ID; i < BIZ_MAX_ID; i++){if(IsPlayerInRangeOfPoint(playerid,2,Biz[i][X],Biz[i][Y],Biz[i][Z])){if(strcmp(Biz[i][Owner],"Los_Angeles",true, MAX_PLAYER_NAME)==0||Spot[playerid]){TeleportToBiz(playerid, i);return1;}else{new name[MAX_PLAYER_NAME], temp[128];
name =GetName(playerid);if(strcmp(Biz[i][Owner], name,true, MAX_PLAYER_NAME)==0){TeleportToBiz(playerid, i);}else{new fee =Biz[i][Price]/10000;GivePlayerMoneyEx(playerid,-fee);Biz[i][BKasa]+= fee;TeleportToBiz(playerid, i);new moneyb =Biz[i][BKasa];
format(temp,sizeof(temp), BIZPATH, i);if(fexist(temp)){new INI:File= INI_Open(temp);
INI_WriteInt(File,"Kasa", moneyb);Biz[i][BKasa]= moneyb;
INI_Close(File);return1;}}}}}// stock LevelUp(playerid)// Kontrola každé nahrané minuty kvůli výplatě...if(IsBizOwner(playerid)){Player[playerid][BizOwner]=true;}else{Player[playerid][BizOwner]=false;}...// Kontrola každé nahrané hodiny v tom stejném stocku - výplataif(Player[playerid][BankAcc]==true){new penize;new danzaauta;new totaldanzaauta =0;new danzadomy;new totaldanzadomy =0;new totalnipenize;new pname[MAX_PLAYER_NAME];new bizpenize;new zaklad =0;
format(pname,sizeof(pname),"%s",GetName(playerid));for(new i =1; i < MAX_VEHICLES; i++){if(IsValidVehicle(i)){if(Vehicle[i][Faction]==0){if(strcmp(Vehicle[i][Owner], pname,true)==0){if(Vehicle[i][CoinBought]==false){
danzaauta =VehiclePrices[Vehicle[i][Model]-400][0]/100* DAN_ZA_AUTO /20;
totaldanzaauta += danzaauta;}}}}}for(new i2 = HOUSE_START_ID; i2 < HOUSE_MAX_ID; i2++){if(strcmp(House[i2][Owner], pname,true)==0){if(House[i2][CoinBought]==false){
danzadomy =House[i2][Price]/100* DAN_ZA_DUM /20;
totaldanzadomy += danzadomy;}}}for(new i2 = GARAGE_START_ID; i2 < GARAGE_MAX_ID; i2++){if(strcmp(Garage[i2][Owner], pname,true)==0){if(Garage[i2][CoinBought]==false){
danzadomy =Garage[i2][Price]/100* DAN_ZA_DUM /20;
totaldanzadomy += danzadomy;}}}for(new i2 = BIZ_START_ID; i2 < BIZ_MAX_ID; i2++){if(strcmp(Biz[i2][Owner], pname,true)==0){new temp[128];
danzadomy =Biz[i2][Price]/100* DAN_ZA_DUM /20;
totaldanzadomy += danzadomy;
bizpenize =Biz[i2][Price]/100;
zaklad += bizpenize;
format(temp,sizeof(temp), BIZPATH, i2);if(fexist(temp)){new INI:File= INI_Open(temp);
INI_WriteInt(File,"Kasa", zaklad);Biz[i2][BKasa]+= zaklad;
INI_Close(File);}}}// NačítánípublicLoadBiz(i,name[],value[]){
INI_Int("ID",Biz[i][ID]);
INI_String("Owner",Biz[i][Owner], MAX_PLAYER_NAME);
INI_String("Name",Biz[i][Name],32);
INI_Int("Locked",Biz[i][Locked]);
INI_Bool("Lights",Biz[i][LightsInt]);
INI_Float("X",Biz[i][X]);
INI_Float("Y",Biz[i][Y]);
INI_Float("Z",Biz[i][Z]);
INI_Float("A",Biz[i][A]);
INI_Int("Kasa",Biz[i][BKasa]);
INI_Int("Interior",Biz[i][Interior]);
INI_Int("Price",Biz[i][Price]);
INI_String("Movein",Biz[i][Movein], MAX_PLAYER_NAME);return1;}
// EDIT: Ještě dotaz. V čem může být ten pekelný problém, když se občas stává, že se domy, garáže nebo podniky "pokazí" po restartu a musím je odebrat, aby fungovaly zase textdrawy a mapping z filterscriptů? Samozřejmě nezasažené pickupy zůstávají na místě, kde byly a ty "poškozené" mizí, pokud si dobře pamatuji na souřadnice 0 0 0. A taky se stává, že se někdy pokazí i systém ukládání a stocky na ukládání dat pro hráče a pro jejich vozidla skript za běhu ignoruje. Čím to může být způsobeno?
Dotaz
Meric 1
Ahoj, tak jsem tady zas. Mám problém se špatně fungujícím dialogem kasy. Stále mi to píše, že v kase nemám dost peněz, i přestože tam jsou. Na testovacím serveru mi to napíše ale i dá ty peníze, de facto se vykoná to, co chci, ale na veřejným, který už narozdíl od testovacího není prázdný to pouze píše tu hlášku a nedá to ani floka. Kontroloval jsem i jestli se hodnota při každé výplatě, kdy chodí i do kasy tržba ukládá. To také dělá, ale špatně. Při vytvoření podniku a upravení ceny například na 1 000 000 to funguje správně, do kasy jde každou hodinu 10 000 podle vzorce (který nejspíš upravím). Ale když k tomu koupím druhý podnik, s cenou třeba 50 000, tak místo aby do jedné kasy šlo 10 000 a do druhé 500, tak v jedné je 10 000 a v druhé 10 500. Dle toho usuzuji, že je chyba v cyklu, ale jak to změnit, aby to fungovalo, nad tím se lámu už hodiny a jsem bezradný. Nejsem sice úplně začátečník, ale nějaké ty mezery ještě mám, tak to prosím berte v úvahu, děkuji. Přiložím pro jistotu úplně vše, co nějak souvisí s kasou. Na požádání můžu poslat i další části, když to pomůže k vyřešení problémů. Budu rád za každou pomoc. :-)
// EDIT: Ještě dotaz. V čem může být ten pekelný problém, když se občas stává, že se domy, garáže nebo podniky "pokazí" po restartu a musím je odebrat, aby fungovaly zase textdrawy a mapping z filterscriptů? Samozřejmě nezasažené pickupy zůstávají na místě, kde byly a ty "poškozené" mizí, pokud si dobře pamatuji na souřadnice 0 0 0. A taky se stává, že se někdy pokazí i systém ukládání a stocky na ukládání dat pro hráče a pro jejich vozidla skript za běhu ignoruje. Čím to může být způsobeno?
Edited by MericLink to comment
Share on other sites
4 odpovědí na tuto otázku
Recommended Posts