Mivčo 90 Odesláno: 3. Září, 2020 Share Odesláno: 3. Září, 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 Link to comment Share on other sites More sharing options...
Quiter 99 Odesláno: 3. Září, 2020 Share Odesláno: 3. Září, 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 3. Září, 2020 by Quiter 1 Link to comment Share on other sites More sharing options...
Mivčo 90 Odesláno: 4. Září, 2020 Author Share Odesláno: 4. Září, 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); Link to comment Share on other sites More sharing options...
Scydo 397 Odesláno: 4. Září, 2020 Share Odesláno: 4. Září, 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 4. Září, 2020 by Scydo Link to comment Share on other sites More sharing options...
Kudris 14 Odesláno: 4. Září, 2020 Share Odesláno: 4. Září, 2020 A registračku už máš? 1 Link to comment Share on other sites More sharing options...
Mivčo 90 Odesláno: 5. Září, 2020 Author Share Odesláno: 5. Září, 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 Link to comment Share on other sites More sharing options...
Quiter 99 Odesláno: 5. Září, 2020 Share Odesláno: 5. Září, 2020 VydelkovySystem = Vysloto[id] - VydelkovySystem; // tu je ID a hore (vo formate) máš PLAYERID Link to comment Share on other sites More sharing options...
Mivčo 90 Odesláno: 5. Září, 2020 Author Share Odesláno: 5. Září, 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 Link to comment Share on other sites More sharing options...
Quiter 99 Odesláno: 5. Září, 2020 Share Odesláno: 5. Září, 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 5. Září, 2020 by Quiter Link to comment Share on other sites More sharing options...
Mivčo 90 Odesláno: 6. Září, 2020 Author Share Odesláno: 6. Září, 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... Link to comment Share on other sites More sharing options...
Quiter 99 Odesláno: 6. Září, 2020 Share Odesláno: 6. Září, 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 Link to comment Share on other sites More sharing options...
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