Jump to content

Žebříček

Populární obsah

Showing content with the highest reputation since 04/24/24 in all areas

  1. Dovolil jsem si mensi optimalizaci #include <a_samp> enum e_info { pVodickyB, pVodickyC } new PlayerInfo[MAX_PLAYERS][e_info]; new autoskolacarb; new autoskolab[MAX_PLAYERS]; new autoskolac[MAX_PLAYERS]; new PlayerText:akotskolabkonec[MAX_PLAYERS][18]; new PlayerText:autoskolabtd[MAX_PLAYERS][12]; new PlayerText:autoskolatd[MAX_PLAYERS][12]; new PlayerText:preukazvlastni[MAX_PLAYERS]; new PlayerText:preukazvlastni1[MAX_PLAYERS]; new PlayerText:nedostatokpenazi[MAX_PLAYERS]; new PlayerText:nedostatokpenazi1[MAX_PLAYERS]; new autoskolacarc; new autoskolacarcnaves; enum { DIALOG_AUTOSKOLA } //----------------------------------------------------------------------------// #define CP 1 #define CCP 16 new Float:CPAutoskolaB[][] = { {-2047.6212,-78.2796,34.7413,5.0}, {-2026.7949,-156.6074,35.3203,5.0}, {-2045.3695,-173.9235,37.7754,5.0}, {-2058.1487,-162.0910,35.3203,5.0}, {-2058.2043,-126.9359,35.3227,5.0}, {1148.3583,1376.4371,10.5468,7.0}, {1103.7428,1376.0496,10.5468,5.0}, {1007.2051,1382.1805,10.5751,7.0}, {1006.8726,1716.1813,10.6523,7.0}, {1007.9291,1810.5002,10.7037,7.0}, {1224.1656,1813.0670,13.6591,7.0}, {1272.4874,1743.7592,9.0676,7.0}, {1217.2009,1442.5193,6.5797,7.0}, {1174.1589,1376.4054,10.6933,7.0} }; new Float:CPAutoskolaC[][] = { {1142.7788,1264.6090,11.4266,5.0}, {1125.2251,1232.4261,11.4270,5.0}, {1111.6285,1258.4397,11.4275,5.0}, {1110.7295,1299.6412,11.4267,5.0} }; public OnPlayerEnterCheckpoint(playerid) { switch(autoskolab[playerid]) { case CP .. CP + sizeof(CPAutoskolaB): { if(autoskolab[playerid] >= sizeof(CPAutoskolaB)) { PlayerInfo[playerid][pVodickyB]++; SetPlayerVirtualWorld(playerid, 0); DisablePlayerCheckpoint(playerid); SetPlayerPos(playerid, 1170.7604,1353.1532,10.9219); SetPlayerFacingAngle(playerid, 89.9102); SetPlayerInterior(playerid, 0); SetCameraBehindPlayer(playerid); TogglePlayerControllable(playerid,0); SetTimerEx("AntifreezeAutoSkola", 5000, false, "i", playerid); SetTimerEx("TextDrawAutoskola", 5000, false, "i", playerid); for(new i;i<sizeof(akotskolabkonec[]);i++) PlayerTextDrawShow(playerid, akotskolabkonec[playerid][i]); } else { SetPlayerCheckpoint(playerid,CPAutoskolaB[autoskolab[playerid]][0],CPAutoskolaB[autoskolab[playerid]][1],CPAutoskolaB[autoskolab[playerid]][2],CPAutoskolaB[autoskolab[playerid]][3]); autoskolab[playerid]++; if(autoskolab[playerid] == 6) { LinkVehicleToInterior(autoskolacarb,0); SetPlayerInterior(playerid,0); SetCameraBehindPlayer(playerid); SetVehicleZAngle(autoskolacarb,149.2382); SetVehiclePos(autoskolacarb,1163.3914,1380.4377,10.5469); TogglePlayerControllable(playerid,0); SetTimerEx("AntifreezeAutoSkola", 8000, false, "i", playerid); SetTimerEx("TextDrawAutoskola", 8000, false, "i", playerid); for(new i;i<sizeof(autoskolabtd[]);i++) PlayerTextDrawShow(playerid, autoskolabtd[playerid][i]); } } } case CCP .. CCP + sizeof(CPAutoskolaC): { SetPlayerCheckpoint(playerid,CPAutoskolaC[autoskolac[playerid]][0],CPAutoskolaC[autoskolac[playerid]][1],CPAutoskolaC[autoskolac[playerid]][2],CPAutoskolaC[autoskolac[playerid]][3]); autoskolac[playerid]++; } } return 1; } public OnDialogResponse(playerid,dialogid,response,listitem,inputtext[]) { if(dialogid == DIALOG_AUTOSKOLA) { if(!response) { SetPlayerPos(playerid,1170.7604,1353.1532,10.9219); return 1; } switch (listitem) { case 0: { if(PlayerInfo[playerid][pVodickyB] == 1) { SetTimerEx("preukazy", 5000, false, "i", playerid); PlayerTextDrawShow(playerid, preukazvlastni1[playerid]); PlayerTextDrawShow(playerid, preukazvlastni[playerid]); SetPlayerPos(playerid,1170.7604,1353.1532,10.9219); } else if(GetPlayerMoney(playerid) < 10000) { SetTimerEx("Nedostatokpenazi", 5000, false, "i", playerid); PlayerTextDrawShow(playerid, nedostatokpenazi[playerid]); PlayerTextDrawShow(playerid, nedostatokpenazi1[playerid]); SetPlayerPos(playerid,1170.7604,1353.1532,10.9219); } else //když splňuje podmínky { GivePlayerMoney(playerid,-10000); //vezmem mu peníze autoskolab[playerid] = CP; autoskolacarb = CreateVehicle(565, -2042.4133,-112.9670,35.2057,179.9765, random(100), random(100), 1000); //vytvoříme vozidlo (ID) a souřdnice kde se spawne PutPlayerInVehicle(playerid, autoskolacarb,0); SetVehicleVirtualWorld(autoskolacarb, 10); SetPlayerVirtualWorld(playerid, 10); SetPlayerCheckpoint(playerid,-2037.4709,-127.8062,35.2436,7.0); TogglePlayerControllable(playerid,0); SetTimerEx("AntifreezeAutoSkola", 8000, false, "i", playerid); //textdrawsautoskolaCVICISKO SetTimerEx("TextDrawAutoskola", 8000, false, "i", playerid); for(new i;i<sizeof(autoskolatd[]);i++) PlayerTextDrawShow(playerid, autoskolatd[playerid][i]); } } case 1: { if(PlayerInfo[playerid][pVodickyC] == 1) { SetTimerEx("preukazy", 5000, false, "i", playerid); PlayerTextDrawShow(playerid, preukazvlastni1[playerid]); PlayerTextDrawShow(playerid, preukazvlastni[playerid]); SetPlayerPos(playerid,1170.7604,1353.1532,10.9219); } else if(GetPlayerMoney(playerid) < 9999) { SetTimerEx("Nedostatokpenazi", 5000, false, "i", playerid); PlayerTextDrawShow(playerid, nedostatokpenazi[playerid]); PlayerTextDrawShow(playerid, nedostatokpenazi1[playerid]); SetPlayerPos(playerid,1170.7604,1353.1532,10.9219); } else //když splňuje podmínky { GivePlayerMoney(playerid,-10000); //vezmem mu peníze autoskolac[playerid] = CCP; autoskolacarc = CreateVehicle(403, 1139.6000000,1342.1000000,11.5000000,180.0000000, random(100), random(100), 1000); autoskolacarcnaves = CreateVehicle(435, 1139.6000000,1351.0000000,11.5000000,180.0000000, random(100), random(100), 1000); AttachTrailerToVehicle(autoskolacarcnaves, autoskolacarc); PutPlayerInVehicle(playerid, autoskolacarc,0); SetPlayerCheckpoint(playerid,1142.4054,1314.2500,11.4265,5.0); } } } } return 1; }
    4 points
  2. Je na čase skúsiť si ladenie programu (debugging). V Pawn sa to rieši vypisovaním správ do konzole (print, printf) / chatu (SendClientMessageToAll). V tvojom prípade chceme overiť nasledovné: 1. Načítajú sa dáta po pripojení správne? 2. Neresetujú sa dáta náhodou v OnPlayerSpawn? 3. Volá sa GivePlayerWeapon v OnPlayerSpawn so správnymi dátami? Poďme overiť bod 1... do LoadUser_data hneď za riadok INI_Int("pZbran2naboje",PlayerInfo[playerid][pZbran2naboje]); vlož výpis načítaných dát. Napríklad: print("Výpis načítaných zbraní:") printf("zbran0: %d", PlayerInfo[playerid][pZbran0]); printf("zbran0naboje: %d", PlayerInfo[playerid][pZbran0naboje]); printf("zbran1: %d", PlayerInfo[playerid][pZbran1]); printf("zbran1naboje: %d", PlayerInfo[playerid][pZbran1naboje]); printf("zbran2: %d", PlayerInfo[playerid][pZbran2]); printf("zbran2naboje: %d", PlayerInfo[playerid][pZbran2naboje]); Potom sa v hre prihlás a v server logu by si mal uvidieť, aké dáta sa načítali. Ak tam uvidíš správne dáta, musíš patrať ďalej... Bod 2... V OnPlayerSpawn skontroluj, či sa ti náhodou zbrane neresetujú if(Deathreset[playerid] == 1) { PlayerInfo[playerid][pZbran0] = 0; PlayerInfo[playerid][pZbran0naboje] = 0; PlayerInfo[playerid][pZbran1] = 0; PlayerInfo[playerid][pZbran1naboje] = 0; PlayerInfo[playerid][pZbran2] = 0; PlayerInfo[playerid][pZbran2naboje] = 0; print("Reset hráčových zbraní"); // do server logu SendClientMessageToAll(-1, "Reset hráčových zbraní"); // alebo priamo v hre do chatu, aby si to hneď videl } Keď sa spawneš a uvidíš v chate "Reset hráčových zbraní" bez toho, že by predtým zomrel, tak vieš, že je chyba v tejto časti kódu. Bod 3... V OnPlayerSpawn tesne pred tým, ako hráčovi givneš zbrane, znova skontroluj hodnoty pZbran0, pZbran0naboje, ... print("Výpis zbraní pred givnutím:") printf("zbran0: %d", PlayerInfo[playerid][pZbran0]); printf("zbran0naboje: %d", PlayerInfo[playerid][pZbran0naboje]); printf("zbran1: %d", PlayerInfo[playerid][pZbran1]); printf("zbran1naboje: %d", PlayerInfo[playerid][pZbran1naboje]); printf("zbran2: %d", PlayerInfo[playerid][pZbran2]); printf("zbran2naboje: %d", PlayerInfo[playerid][pZbran2naboje]); Skontroluj, či to vypíše správne dáta do konzole (server logu).
    2 points
  3. Není důvod do toho nejít.. Pochybuju, že půjde o chráněnou značku, kterou někde někdo registroval.. Tento patvar je tak generický, že i kdyby ho někdo dokonale přetvořil a pak někde použil, bude problém se hádat už jen proto, že původní projekt zjevně již neexistuje
    1 point
  4. Diky za info, psal jsem to naslepo tak jsem se bal nejake chybicky
    1 point
  5. Ďakujem vemi pekne ATomasi odskúšané a funguje to velmi dobre
    1 point
  6. milous sa ti snažil naznačiť, že chyba je tu: case CCP1: { DisablePlayerCheckpoint(playerid); SetPlayerCheckpoint(playerid,1142.7788,1264.6090,11.4266,5.0); autoskolac[playerid] = CCP1; } AK hráč vezme 1. checkpoint Cčka, do autoskolac ukladáš zase 1. checkpoint Cčka. Chceš tam autoskolac[playerid] = CCP2 a podobne to posunúť všade (v Cčku). Čo sa týka returnu, skús si najskôr prečítať ako funguje napríklad tu: https://sampwiki.blast.hk/wiki/Control_Structures#return Pamätám si, že keď som sa učil pawn (moja prvá skúsenosť s programovaním), tak som return dlho nechápal, až kým som nenarazil na tento článok.
    1 point
  7. Namiesto case 1, 2, 3... Používaj vo switchi tie svoje definície a podobné chyby uvidíš v budúcnosti ľahšie
    1 point
  8. Sakra, přišel jsem se podívat jako 26 letý chlap, který tady byl když mu bylo 14-16 let ... hrozná nostalgie toto, byl jsem pěkný dement koukám hh
    1 point
×
×
  • Create New...