Mivčo 84 Odesláno před Září 3, 2020 Zdravím mám problem... Mám autoškolu rozdelenú na 2 časti. Prvú časť jazdu robíš na dvore autoškoly a druhú časť po meste ale problem mám že keď dokončím prvú jazdu tak mi nenabehne druhá časť jazdy po meste Code: public OnPlayerEnterRaceCheckpoint(playerid) { if(!IsPlayerNPC(playerid)) { if(IsPlayerConnected(playerid)) { if(VRServer[playerid][MissionID] == 1) { if(GetPlayerVehicleID(playerid) > 0) { SetPVarInt(playerid,"Skuska",GetPVarInt(playerid,"Skuska")+1); switch(GetPVarInt(playerid,"Skuska")) { case 0: SetPlayerRaceCheckpoint(playerid, 0, 1792.4083,-1801.7075,13.1925, 1782.0227,-1803.4670,13.1813, 2.0); case 1: SetPlayerRaceCheckpoint(playerid, 0, 1782.0227,-1803.4670,13.1813, 1774.3981,-1803.7609,13.5234, 2.0); case 2: SetPlayerRaceCheckpoint(playerid, 0, 1774.3981,-1803.7609,13.5234, 1766.6222,-1802.6149,13.5380, 2.0); case 3: SetPlayerRaceCheckpoint(playerid, 0, 1766.6222,-1802.6149,13.5380, 1758.1747,-1800.7885,13.5461, 2.0); case 4: SetPlayerRaceCheckpoint(playerid, 0, 1758.1747,-1800.7885,13.5461, 1750.6824,-1797.5869,13.5402, 2.0); case 5: SetPlayerRaceCheckpoint(playerid, 0, 1750.6824,-1797.5869,13.5402, 1746.7960,-1790.5583,13.5335, 2.0); case 6: SetPlayerRaceCheckpoint(playerid, 0, 1746.7960,-1790.5583,13.5335, 1748.0051,-1781.1691,13.5345, 2.0); case 7: SetPlayerRaceCheckpoint(playerid, 0, 1748.0051,-1781.1691,13.5345, 1754.8124,-1773.3386,13.5357, 2.0); case 8: SetPlayerRaceCheckpoint(playerid, 0, 1754.8124,-1773.3386,13.5357, 1763.8038,-1774.8002,13.5375, 2.0); case 9: SetPlayerRaceCheckpoint(playerid, 0, 1763.8038,-1774.8002,13.5375, 1784.5613,-1783.7423,13.5323, 2.0); case 10: SetPlayerRaceCheckpoint(playerid, 1, 1784.5613,-1783.7423,13.5323, 1784.5613,-1783.7423,13.5323, 2.0); case 11: { new Float:h; GetVehicleHealth(GetPlayerVehicleID(playerid),h); DeletePVar(playerid,"Skuska"); VRServer[playerid][MissionID] = 9999; if(h < 650) { FormatPlayerInfoBox(playerid,"~g~Vodicak","~w~Nespravil si vodicak, Musís ísť ešte raz.",3000); } else { FormatPlayerInfoBox(playerid,"~g~Vodicak","~w~Uspesne si absolvoval Prvy test Autoskoly a pokracuj dalej po meste",3000); SetPlayerPos(playerid, 1801.2992,-1751.0087,13.5503); VRServer[playerid][MissionID] = 2; } DisablePlayerRaceCheckpoint(playerid); } } } } else if(VRServer[playerid][MissionID] == 2) { if(GetPlayerVehicleID(playerid) > 0) { SetPVarInt(playerid,"Skuska",GetPVarInt(playerid,"Skuska")+1); switch(GetPVarInt(playerid,"Skuska")) { case 0: SetPlayerRaceCheckpoint(playerid, 0, 1820.1997,-1724.1368,13.0624, 1845.3339,-1495.8528,13.0400, 2.0); case 1: SetPlayerRaceCheckpoint(playerid, 0, 1845.3339,-1495.8528,13.0400, 1843.2533,-1265.0377,13.0731, 2.0); case 2: SetPlayerRaceCheckpoint(playerid, 0, 1843.2533,-1265.0377,13.0731, 1718.3967,-1294.8931,13.0663, 2.0); case 3: SetPlayerRaceCheckpoint(playerid, 0, 1718.3967,-1294.8931,13.0663, 1708.8884,-1164.0419,23.3392, 2.0); case 4: SetPlayerRaceCheckpoint(playerid, 0, 1708.8884,-1164.0419,23.3392, 1462.9440,-1163.4559,23.3460, 2.0); case 5: SetPlayerRaceCheckpoint(playerid, 0, 1462.9440,-1163.4559,23.3460, 1454.2349,-1440.2679,13.0681, 2.0); case 6: SetPlayerRaceCheckpoint(playerid, 0, 1454.2349,-1440.2679,13.0681, 1424.0779,-1726.4900,13.0743, 2.0); case 7: SetPlayerRaceCheckpoint(playerid, 0, 1424.0779,-1726.4900,13.0743, 1391.6322,-1746.0953,13.0625, 2.0); case 8: SetPlayerRaceCheckpoint(playerid, 0, 1391.6322,-1746.0953,13.0625, 1391.6322,-1746.0953,13.0625, 2.0); case 9: SetPlayerRaceCheckpoint(playerid, 0, 1391.6322,-1746.0953,13.0625, 1393.5955,-1869.4871,13.0648, 2.0); case 10: SetPlayerRaceCheckpoint(playerid, 0, 1393.5955,-1869.4871,13.0648, 1681.4602,-1862.0621,13.0703, 2.0); case 11: SetPlayerRaceCheckpoint(playerid, 0, 1681.4602,-1862.0621,13.0703, 1694.8257,-1735.6460,13.0606, 2.0); case 12: SetPlayerRaceCheckpoint(playerid, 0, 1694.8257,-1735.6460,13.0606, 1787.7635,-1734.3370,13.0625, 2.0); case 13: SetPlayerRaceCheckpoint(playerid, 1, 1787.7635,-1734.3370,13.0625, 1787.7635,-1734.3370,13.0625, 2.0); case 14: { new Float:h; GetVehicleHealth(GetPlayerVehicleID(playerid),h); DeletePVar(playerid,"Skuska"); VRServer[playerid][MissionID] = 9999; if(h < 850) { FormatPlayerInfoBox(playerid,"~g~Vodicak","~w~Nespravil si vodicak. Musís ísť ešte raz.",3000); } else { PlayerInfo[playerid][Vodicak] = 1; FormatPlayerInfoBox(playerid,"~g~Vodicak","~w~Uspesne si dokončil Autoskolu. Prave si ziskal vodicak",3000); } DisablePlayerRaceCheckpoint(playerid); } } } } } } return 1; } 1 Nahlásit příspěvek Sdílet tento příspěvek Link to post Share on other sites
Quiter 68 Odesláno před Září 3, 2020 (upraveno) Trošku viac opíš problém aby sme nestrácali čas hlúposťami... Pri dokončení prvej časti nezobrazuješ nový CP... Alebo musí hráč prísť k nejakému pickupu a spustiť 2. časť skúšky? Podľa textov v kóde si myslím že chceš aby po dokončení prvej časti autoškoly automaticky prešiel na druhú časť. V tom je problém, pretože si použil ELSE IF, konkrétne tuto: else if(VRServer[playerid][MissionID] == 2) Tento riadok spôsobí, že keď sa dokončí prvá misia, tak už sa nebude pokračovať v tejto vetve programu. Názorná ukážka: new w = 1; if (w == 1) // podmienka splnena, idem dnu w = 2; // nastavim w na 2 else if (w == 2) // podmienka sice je splnena ale program ju preskoci pretoze v skutocnosti sa najprv vyhodnoti ELSE a az potom IF w = 3; // toto sa uz nevykona // w je teraz 2 // toto je identicky kod ale viac prehladny w = 1; if (w == 1) { w = 2; } else { if (w == 2) { w = 3; } } // a takto by vyyeral kod kde sa splnia obe podmienky w = 1; if (w == 1) // podmienka splnena takze nastavime w na 2 w = 2; if (w == 2) // ziadne else takze sa vyhodnocuje podmienka a ta je splnena w = 3; Takže moja rada na záver: ak chceš automaticky spustiť druhú misiu, zmaž ELSE Ešte tip: používaš SetPlayerPos po dokončení prvej časti - hráčovi asi bude chýbať auto if(GetPlayerVehicleID(playerid) > 0) // IsPlayerInAnyVehicle SetPVarInt(playerid,"Skuska",GetPVarInt(playerid,"Skuska")+1); // ked kukam na toto, načo máš CASE 0? či "Skuska" je niekedy nastavena na -1? EDIT: Načo kontroluješ či nie je hráč NPC? Ty nejakým NPC nastavuješ checkpointy? (NIE) Taktiež nepripojený hráč asi nespustí OnPlayerEnterRaceCheckpoint... Zbytočné podmienky Edited Září 3, 2020 by Quiter 1 Nahlásit příspěvek Sdílet tento příspěvek Link to post Share on other sites
Mivčo 84 Author of the topic Odesláno před Září 4, 2020 Citace else if(VRServer[playerid][MissionID] == 2) tu bol problem... a už to išlo... proste školácka chyba na mojej strane :| :D a pomohol by si mi ešte s týmto ak chceš... mám spravený obchod/ nemovitosti a ked dám vyplatiť tak mi to dá takuto sumu ako je na obrazku proste bude chyba v mode a ja už neviem kde.... pridám aj kod case 3: { if(playerid == blbost) { if(0 < Vysloto[id]) { new string[256]; new Float:VydelkovySystem = floatround(random((Vysloto[id] / 7) + 100), floatround_round); format(string, 200, "Obchod %s ma v trezoru %d$,bolo strhnuto %d$ za udrzbu a vyplaty zamestnancov. Peniaze vam boli poslane na ucet.", NehnutelnostInfo[id][Nazev], Vysloto[playerid] - VydelkovySystem, VydelkovySystem); FormatPlayerInfoBox(playerid,"~g~Nemovitost",string, 3000); VydelkovySystem = Vysloto[id] - VydelkovySystem; GivePlayerMoney(playerid, VydelkovySystem); Vysloto[id] = 0; } else { FormatPlayerInfoBox(playerid,"~g~Nemovitost","Nemovitost nic nezarobila.", 3000); } } else { new var31[128]; format(var31, 128, "Nie si vlastnikom tento nehnutelnosti %s", NehnutelnostInfo[id][Nazev]); FormatPlayerInfoBox(playerid,"~g~Nemovitost",var31, 3000); } } Proste celý nemovytosti mi funguju od kupý až po neviem čo ale ked mám to vyplatiť tak nič proste proste pri tomto kode mi píše toto warning 213: tag mismatch GivePlayerMoney(playerid, VydelkovySystem); Nahlásit příspěvek Sdílet tento příspěvek Link to post Share on other sites
Scydo 367 Guru Odesláno před Září 4, 2020 (upraveno) před 2 hodinami, Mivčo said: warning 213: tag mismatch GivePlayerMoney(playerid, VydelkovySystem); Proměnná VydelkovySystem je float (desetinné číslo) a GivePlayerMoney() chce int (celá čísla). Edited Září 4, 2020 by Scydo Nahlásit příspěvek Sdílet tento příspěvek Link to post Share on other sites
Kudris 12 Odesláno před Září 4, 2020 A registračku už máš? 1 Nahlásit příspěvek Sdílet tento příspěvek Link to post Share on other sites
Mivčo 84 Author of the topic Odesláno před Září 5, 2020 před 14 hodinami, Scydo said: Proměnná VydelkovySystem je float (desetinné číslo) a GivePlayerMoney() chce int (celá čísla). no dal som preč ten float z new a teraz mi ukazuje najprv že -1500 a potom 1500 a pri sebe mám 120000$ hmm nechapem aby mi to ukazovalo tu sumu Nahlásit příspěvek Sdílet tento příspěvek Link to post Share on other sites
Quiter 68 Odesláno před Září 5, 2020 VydelkovySystem = Vysloto[id] - VydelkovySystem; // tu je ID a hore (vo formate) máš PLAYERID Nahlásit příspěvek Sdílet tento příspěvek Link to post Share on other sites
Mivčo 84 Author of the topic Odesláno před Září 5, 2020 před 4 hodinami, Quiter said: VydelkovySystem = Vysloto[id] - VydelkovySystem; // tu je ID a hore (vo formate) máš PLAYERID ale mám to takto... else if(Current == Nehnutelnosts) { TogglePlayerControllable(playerid, true); coze[playerid] = 0; new id = GetPlayerNehnutelnost(playerid); new blbost = PlayerIDs(NehnutelnostInfo[id][Owner]); if(id == -1) { return FormatPlayerInfoBox(playerid,"~g~Nemovitost","Musite byt u nemovitosti",4000); } switch(row) { od switch mám case Nahlásit příspěvek Sdílet tento příspěvek Link to post Share on other sites
Quiter 68 Odesláno před Září 5, 2020 (upraveno) format(string, 200, "Obchod %s ma v trezoru %d$,bolo strhnuto %d$ za udrzbu a vyplaty zamestnancov. Peniaze vam boli poslane na ucet.", NehnutelnostInfo[id][Nazev], Vysloto[playerid] - VydelkovySystem, VydelkovySystem); Tu máš Vysloto[PLAYERID] VydelkovySystem = Vysloto[id] - VydelkovySystem; A tu zase ID... čiže v infoboxe ti zobrazí nejakú nezmyselnú hodnotu Tiež ako už bolo vyššie spomínané. skontroluj si či sú tvoje premenné (hlavne Vysloto a VydelkovySystem) typu integer (tj. obyčajný NEW). Ak použiješ format %d a pošleš tam float tak sa opäť zobrazí úplne nezmyselná hodnota Edited Září 5, 2020 by Quiter Nahlásit příspěvek Sdílet tento příspěvek Link to post Share on other sites
Mivčo 84 Author of the topic Odesláno před Září 6, 2020 před 20 hodinami, Quiter said: format(string, 200, "Obchod %s ma v trezoru %d$,bolo strhnuto %d$ za udrzbu a vyplaty zamestnancov. Peniaze vam boli poslane na ucet.", NehnutelnostInfo[id][Nazev], Vysloto[playerid] - VydelkovySystem, VydelkovySystem); Tu máš Vysloto[PLAYERID] VydelkovySystem = Vysloto[id] - VydelkovySystem; A tu zase ID... čiže v infoboxe ti zobrazí nejakú nezmyselnú hodnotu Tiež ako už bolo vyššie spomínané. skontroluj si či sú tvoje premenné (hlavne Vysloto a VydelkovySystem) typu integer (tj. obyčajný NEW). Ak použiješ format %d a pošleš tam float tak sa opäť zobrazí úplne nezmyselná hodnota mám iba toto: new Vysloto[MAX_PLAYERS_EX]; a new Float:VydelkovySystem = floatround(random((Vysloto[id] / 7) + 100), floatround_round); a zmenil som to na id a ked na servery kupim obchod a po vyplate idem si pre zarobok obchodu tak mi to dá cez jednu miliardu... Nahlásit příspěvek Sdílet tento příspěvek Link to post Share on other sites
Quiter 68 Odesláno před Září 6, 2020 Miešaš hrušky s jablkami new id = GetPlayerNehnutelnost(playerid); // tu je ID čož nemá s playerid nič spoločné, je to proste ID firmy před 11 minutami, Mivčo said: mám iba toto: new Vysloto[MAX_PLAYERS_EX]; a new Float:VydelkovySystem = floatround(random((Vysloto[id] / 7) + 100), floatround_round); a zmenil som to na id a ked na servery kupim obchod a po vyplate idem si pre zarobok obchodu tak mi to dá cez jednu miliardu... tu píšeš že Vysloto[MAX_PLAYERS_EX]; takže sa viaže na PLAYERID VydelkovySystem = Vysloto[id] - VydelkovySystem; Tu opäť používaš ID... Chápeš? Hrušky s jablkami... A tiež zmeň new Float:VydelkovySystem na new VydelkovySystem... Potom to otestuj a pošli sem realny príklad + sprav si viac výpisov, kludne si vypíš všetky premenné do chatu pred spracovaním, po spracovaní, v priebehu nejakých výpočtov a na základe toho hladaj problém Inak poslal som ti súkromnú správu, neviem či si ju čítal Nahlásit příspěvek Sdílet tento příspěvek Link to post Share on other sites