Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define LIMIT_WG (30)
- #define LIMIT_RACE (20)
- #define LIMIT_RACE_START_POS (10)
- #define LIMIT_RACE_CP (30)
- #define TIME_TO_START_GAME (8000)
- #define GAME_NONE (0)
- #define GAME_WG (1)
- #define GAME_RACE (2)
- #define COUNT_TO_START_WG (2)
- #define COUNT_TO_START_RACE (2)
- #define COLOR_WG "{CC1400}"
- #define COLOR_RACE "{119AFF}"
- // Forwardy
- forward ZabawyInit();
- forward PlayerSignUpGame(playerid, gameid);
- forward CheckStart(gameid);
- forward Zabawy_OnPlayerDeath(playerid, killerid, reason);
- forward Zabawy_OnPlayerDisconnect(playerid);
- forward BeforeStartGame(playerid, gameid);
- forward StartGame(gameid);
- forward WGSetWorldBounds();
- forward WGCheckPos();
- enum WorldBound { Float:wMinX, Float:wMaxX, Float:wMinY, Float:wMaxY }
- /* Spis funkcji
- - WGShowControl(playerid) - Dialog ze scenariuszami WG. Mozna dodac nowy, zedytowac, usunac istniejacy
- - WGUpdateControlStr() - Formatowanie stringu wykorzystywanego w powyzszej funkcji.
- - CMD:controlwg(playerid) - Wywołuje funkcje WGShowControl(playerid)
- */
- // Globalne zmienne do zabaw
- new ZabawaTrwa, ZabawaStartuje, ZabawaZapisany[MAX_USERS], ZabawaUczestniczy[MAX_USERS];
- // WG
- #define WG_TEAM_RED (0)
- #define WG_TEAM_GREEN (1)
- new WGID[LIMIT_WG], WGName[LIMIT_WG][31], Float:WGSpawnA[LIMIT_WG][3], Float:WGSpawnB[LIMIT_WG][3],
- WGWeapons[LIMIT_WG][8], WGInterior[LIMIT_WG], WGWorldBounds[LIMIT_WG][WorldBound], WGControlStr[1024],
- WGTimer = -1,
- WGZapisani, WGCountPlayersRed, WGCountPlayersGreen, WGCurrentIdx, WGNextScenario, Scores[2];
- // Race
- enum enumRInfo { rID, rName[31], rInterior, rModelid, Float:rStartAngle }
- new RInfo[LIMIT_RACE][enumRInfo], RCPID[LIMIT_RACE], RSpawnID[LIMIT_RACE], Float:RCP[LIMIT_RACE][LIMIT_RACE_CP][3],
- Float:RSpawn[LIMIT_RACE][LIMIT_RACE_START_POS][3],
- RaceNextScenario, RaceControlStr[1024],
- RaceZapisani,
- RaceSamochody[LIMIT_RACE_START_POS] = { -1, ... },
- RaceCurrentIdx, RaceCurrentStartIdx, RaceCurrentCPIdx;
- // Funkcje
- stock CountZabawaZapisany(gameid) {
- new count;
- for(new i; i<MAX_USERS; i++) {
- if(ZabawaZapisany[i] & gameid) count++;
- }
- return count;
- }
- public WGSetWorldBounds() {
- for(new i; i<MAX_USERS; i++) if(ZabawaUczestniczy[i] == GAME_WG) {
- SetPlayerWorldBounds(i, WGWorldBounds[WGCurrentIdx][wMaxX], WGWorldBounds[WGCurrentIdx][wMinX], WGWorldBounds[WGCurrentIdx][wMaxY], WGWorldBounds[WGCurrentIdx][wMinY]);
- printf("Ustawiono WorldBound dla gracza %s", PlayerName(i));
- }
- if(WGTimer != -1) KillTimer(WGTimer);
- WGTimer = SetTimer("WGCheckPos", 2000, true);
- printf("[WGSetWorldBounds] MaxX: %.1f; MinX: %.1f; MaxY: %.1f; MinY: %.1f", WGWorldBounds[WGCurrentIdx][wMaxX], WGWorldBounds[WGCurrentIdx][wMinX], WGWorldBounds[WGCurrentIdx][wMaxY], WGWorldBounds[WGCurrentIdx][wMinY]);
- return 1;
- }
- public WGCheckPos() { //Generalnie warunek nie powinien się nigdy wykonać ponieważ jest WorldBound. No ale są boty, cheaty, airbrake - WG by się nie zakończyło..
- for(new i; i<MAX_USERS; i++) if(ZabawaUczestniczy[i] == GAME_WG) {
- if(!IsPlayerInArea(i, WGWorldBounds[WGCurrentIdx][wMinX]-10, WGWorldBounds[WGCurrentIdx][wMinY]-10, WGWorldBounds[WGCurrentIdx][wMaxX]+10, WGWorldBounds[WGCurrentIdx][wMaxY]+10)) {
- KickPlayerFromWG(i);
- SCM(i, 0xFF0000FF, "Zostałeś wyrzucony z WG z powodu wykroczenia poza strefę gry.");
- }
- }
- return 1;
- }
- KickPlayerFromWG(playerid) { // Założenie: Gracz jest aktualnie na WG.
- if(GPVI(playerid, "WG_Team") == WG_TEAM_RED) WGCountPlayersRed--;
- else WGCountPlayersGreen--;
- DeletePVar(playerid, "WG_Team");
- ZabawaUczestniczy[playerid] = GAME_NONE;
- SetPlayerRandomColor(playerid);
- ResetPlayerWeapons(playerid);
- WGCheckFinish();
- OnPlayerSpawn(playerid);
- }
- WGCheckFinish() {
- if(WGCountPlayersGreen == 0 || WGCountPlayersRed == 0) WGFinish();
- }
- WGFinish() {
- for(new i; i<MAX_USERS; i++) if(ZabawaUczestniczy[i] == GAME_WG) {
- GivePlayerExp(i, EXP_FOR_WIN_WG);
- ResetPlayerWeapons(i);
- SetPlayerRandomColor(i);
- ZabawaUczestniczy[i] = GAME_NONE;
- OnPlayerSpawn(i);
- }
- ZabawaTrwa -= GAME_WG;
- if(WGTimer != -1) KillTimer(WGTimer);
- WGTimer = -1;
- new str[128];
- if(Scores[WG_TEAM_RED] > Scores[WG_TEAM_GREEN]) {
- format(str, 128, COLOR_WG"Wojnę Gangów {36C59A}wygrała drużyna {FF0000}czerwonych {36C59A}z wynikiem %d do %d!", Scores[WG_TEAM_RED], Scores[WG_TEAM_GREEN]);
- SendClientMessageToAll(0x36C59AFF, str);
- format(str, 128, "Zwycięzcy otrzymują %d punktów doświadczenia (exp)!", EXP_FOR_WIN_WG);
- SendClientMessageToAll(0x36C59AFF, str);
- } else if(Scores[WG_TEAM_RED] < Scores[WG_TEAM_GREEN]) {
- format(str, 128, COLOR_WG"Wojnę Gangów {36C59A}wygrała drużyna {00FF00}zielonych {36C59A}z wynikiem %d do %d!", Scores[WG_TEAM_GREEN], Scores[WG_TEAM_RED]);
- SendClientMessageToAll(0x36C59AFF, str);
- format(str, 128, "Zwycięzcy otrzymują %d punktów doświadczenia (exp)!", EXP_FOR_WIN_WG);
- SendClientMessageToAll(0x36C59AFF, str);
- } else { // remis
- format(str, 128, COLOR_WG"Wojnę Gangów {36C59A}została zremisowana wynikiem %d do %d!", Scores[WG_TEAM_RED], Scores[WG_TEAM_GREEN]);
- SendClientMessageToAll(0x36C59AFF, str);
- }
- UpdateZabawyTD();
- CheckStart(GAME_WG);
- }
- WGGetRandomScenario() {
- new Scenarios[LIMIT_WG], idx;
- for(new i; i<LIMIT_WG; i++) if(WGID[i] != -1) Scenarios[idx++] = WGID[i];
- if(!idx) return -1;
- return Scenarios[random(idx)];
- }
- CMD:controlwg(playerid, params[]) {
- WGShowControl(playerid);
- return 1;
- }
- WGIndexID(scenario) {
- for(new i; i<LIMIT_WG; i++) if(WGID[i] == scenario) return i;
- return 0;
- }
- stock GiveWGWeapons(playerid, IdxScenario) {
- for(new i; i<8; i++) if(WGWeapons[IdxScenario][i] != -1) {
- GivePlayerWeapon(playerid, WGWeapons[IdxScenario][i], 3000);
- }
- }
- stock WGShowControl(playerid) {
- ShowPlayerDialogEx(playerid, DIALOG_WG_CONTROL, DIALOG_STYLE_LIST, "Zarządzanie scenariuszami WG", WGControlStr, "OK", "Anuluj");
- }
- stock WGUpdateControlStr() {
- new size = sizeof(WGControlStr);
- WGControlStr[0] = EOS;
- format(WGControlStr, size, "Dodaj nowy scenariusz");
- for(new i; i<LIMIT_WG; i++) if(WGID[i] != -1) {
- format(WGControlStr, size, "%s\n%s", WGControlStr, WGName[i]);
- }
- }
- CMD:wg(playerid, params[]) {
- PlayerSignUpGame(playerid, GAME_WG);
- return 1;
- }
- RaceGetRandomScenario() {
- new Scenarios[LIMIT_RACE], idx;
- for(new i; i<LIMIT_RACE; i++) if(RInfo[i][rID] != -1) Scenarios[idx++] = RInfo[i][rID];
- if(!idx) return -1;
- return Scenarios[random(idx)];
- }
- stock RaceShowControl(playerid) {
- ShowPlayerDialogEx(playerid, DIALOG_RACE_CONTROL, DIALOG_STYLE_LIST, "Zarządzanie scenariuszami Race", WGControlStr, "OK", "Anuluj");
- }
- stock RaceUpdateControlStr() {
- new size = sizeof(RaceControlStr);
- RaceControlStr[0] = EOS;
- format(RaceControlStr, size, "Dodaj nowy scenariusz");
- for(new i; i<LIMIT_RACE; i++) if(RInfo[i][rID] != -1) {
- format(RaceControlStr, size, "%s\n%s", RaceControlStr, RInfo[i][rName]);
- }
- }
- RaceIndexID(scenario) {
- for(new i; i<LIMIT_RACE; i++) if(RInfo[i][rID] == scenario) return i;
- return 0;
- }
- CMD:controlrace(playerid, params[]) {
- RaceShowControl(playerid);
- return 1;
- }
- CMD:race(playerid, params[]) {
- PlayerSignUpGame(playerid, GAME_RACE);
- return 1;
- }
- RaceIndexSpawn(scenario) {
- for(new i; i<LIMIT_RACE; i++) if(RSpawnID[i] == scenario) return i;
- return 0;
- }
- RaceIndexCP(scenario) {
- for(new i; i<LIMIT_RACE; i++) if(RCPID[i] == scenario) return i;
- return 0;
- }
- public PlayerSignUpGame(playerid, gameid) {
- if(ZabawaUczestniczy[playerid] != GAME_NONE) {
- SCM(playerid, C_GRAY, "Już uczestniczysz w jednej zabawie.");
- } else {
- switch(gameid) {
- case GAME_WG: {
- if(WGNextScenario == -1) SCM(playerid, COLOR_WARNING, "Ups.. Nie ma załadowanego ani jednego scenariusza WG.");
- else if(ZabawaZapisany[playerid] & GAME_WG) {
- SCM(playerid, C_GRAY, "Jesteś już zapisany na WG.");
- } else {
- ZabawaZapisany[playerid] += GAME_WG;
- WGZapisani++;
- if(ZabawaTrwa & GAME_WG) SCM(playerid, 0x36C59AFF, "Zapisałeś się na następną kolejkę WG.");
- else SCM(playerid, 0x36C59AFF, "Zapisałeś się na WG.");
- printf("[PlayerSignUpGame(%s, GAME_WG) success. WGZapisani=%d", PlayerName(playerid), WGZapisani); //debug
- CheckStart(GAME_WG);
- }
- }
- case GAME_RACE: {
- if(RaceNextScenario == -1) SCM(playerid, COLOR_WARNING, "Ups.. Nie ma załadowanego ani jednego scenariusza Race.");
- else if(ZabawaZapisany[playerid] & GAME_RACE) {
- SCM(playerid, C_GRAY, "Jesteś już zapisany na WG.");
- }
- else if(RaceZapisani == 10) {
- SCM(playerid, C_GRAY, "Niestety, zapisała się już maksymalna liczba osób na wyścigi.");
- } else {
- ZabawaZapisany[playerid] += GAME_RACE;
- RaceZapisani++;
- if(ZabawaTrwa & GAME_RACE) SCM(playerid, 0x36C59AFF, "Zapisałeś się na następną kolejkę Race.");
- else SCM(playerid, 0x36C59AFF, "Zapisałeś się na Race.");
- printf("[PlayerSignUpGame(%s, GAME_RACE) success. RaceZapisani=%d", PlayerName(playerid), RaceZapisani); //debug
- CheckStart(GAME_RACE);
- }
- }
- }
- }
- UpdateZabawyTD();
- return 1;
- }
- public CheckStart(gameid) {
- switch(gameid) {
- case GAME_WG: {
- if(WGZapisani == COUNT_TO_START_WG) {
- if(!(ZabawaTrwa & GAME_WG) && !(ZabawaStartuje & GAME_WG)) {
- ZabawaStartuje += GAME_WG;
- SetTimerEx("StartGame", TIME_TO_START_GAME, false, "d", GAME_WG);
- new str[128];
- format(str, 128, "Za %d sekund rozpocznie się "COLOR_WG"Wojna Gangów! {36C59A}Wciąż można się dopisać - {FFFF00}/WG", TIME_TO_START_GAME/1000);
- SendClientMessageToAll(0x36C59AFF, str);
- }
- }
- }
- case GAME_RACE: {
- if(RaceZapisani == COUNT_TO_START_RACE) {
- if(!(ZabawaTrwa & GAME_RACE) && !(ZabawaStartuje & GAME_RACE)) {
- ZabawaStartuje += GAME_RACE;
- SetTimerEx("StartGame", TIME_TO_START_GAME, false, "d", GAME_RACE);
- new str[128];
- format(str, 128, "Za %d sekund rozpoczną się "COLOR_RACE"Wyścigi! {36C59A}Wciąż można się dopisać - {FFFF00}/RACE", TIME_TO_START_GAME/1000);
- SendClientMessageToAll(0x36C59AFF, str);
- }
- }
- }
- }
- return 1;
- }
- public BeforeStartGame(playerid, gameid) {
- switch(gameid) {
- case GAME_WG: {
- if(ZabawaZapisany[playerid] & GAME_RACE) {
- ZabawaZapisany[playerid] -= GAME_RACE;
- RaceZapisani--;
- }
- }
- case GAME_RACE: {
- if(ZabawaZapisany[playerid] & GAME_WG) {
- ZabawaZapisany[playerid] -= GAME_WG;
- WGZapisani--;
- }
- }
- }
- return 1;
- }
- public StartGame(gameid) { // C_RED ; C_GREEN2
- switch(gameid) {
- case GAME_WG: {
- if(WGZapisani < COUNT_TO_START_WG) {
- SendClientMessageToAll(0x36C59AFF, COLOR_WG"Wojna Gangów {36C59A}się nie odbędzie ponieważ nie zapisała się wystarczająca liczba graczy.");
- ZabawaStartuje -= GAME_WG;
- for(new i; i<MAX_USERS; i++) if(ZabawaZapisany[i] & GAME_WG) {
- ZabawaZapisany[i] -= GAME_WG;
- }
- WGZapisani = 0;
- } else {
- ZabawaStartuje -= GAME_WG;
- ZabawaTrwa += GAME_WG;
- Scores[WG_TEAM_RED] = 0, Scores[WG_TEAM_GREEN] = 0;
- WGCountPlayersRed = 0, WGCountPlayersGreen = 0;
- new bool:rnd = boolint(random(2));
- WGCurrentIdx = WGIndexID(WGNextScenario);
- printf("StartGame(GAME_WG) success. WGCurrentIdx Scenario=%d", WGCurrentIdx); //debug
- for(new i; i<MAX_USERS; i++) if(ZabawaZapisany[i] & GAME_WG) {
- BeforeStartGame(i, GAME_WG);
- ZabawaUczestniczy[i] = GAME_WG;
- ZabawaZapisany[i] = GAME_NONE;
- ResetPlayerWeapons(i);
- SetPlayerInterior(i, WGInterior[WGCurrentIdx]);
- SetPlayerVirtualWorld(i, VIRTUALWORLD_WG);
- GiveWGWeapons(i, WGCurrentIdx);
- SetPlayerHealth(i, 100.0);
- SetPlayerArmour(i, 100.0);
- if(rnd) {
- SetPVarInt(i, "WG_Team", WG_TEAM_RED);
- SetPlayerTeam(i, WG_TEAM_RED);
- SetPlayerColorEx(i, C_RED);
- SetPlayerPosFreeze(i, WGSpawnA[WGCurrentIdx][0], WGSpawnA[WGCurrentIdx][1], WGSpawnA[WGCurrentIdx][2]);
- SCM(i, 0x36C59AFF, "Jesteś w drużynie: {FF0000}czerwonej!");
- WGCountPlayersRed++;
- } else {
- SetPVarInt(i, "WG_Team", WG_TEAM_GREEN);
- SetPlayerTeam(i, WG_TEAM_GREEN);
- SetPlayerColorEx(i, C_GREEN2);
- SetPlayerPosFreeze(i, WGSpawnB[WGCurrentIdx][0], WGSpawnB[WGCurrentIdx][1], WGSpawnB[WGCurrentIdx][2]);
- SCM(i, 0x36C59AFF, "Jesteś w drużynie: {00FF00}zielonej!");
- WGCountPlayersGreen++;
- }
- rnd = !rnd;
- }
- SetTimer("WGSetWorldBounds", 3000, false);
- WGNextScenario = WGGetRandomScenario();
- WGZapisani = 0;
- new str[160];
- format(str, 160, COLOR_WG"Wojna Gangów {36C59A}rozpoczęta! Scenariusz: \"%s\". Zapisy na następną kolejkę otwarte.", WGName[WGCurrentIdx]);
- SendClientMessageToAll(0x36C59AFF, str);
- }
- }
- case GAME_RACE: {
- if(RaceZapisani < COUNT_TO_START_RACE) {
- SendClientMessageToAll(0x36C59AFF, COLOR_RACE"Wyścigi {36C59A}się nie odbędą ponieważ nie zapisała się wystarczająca liczba graczy.");
- ZabawaStartuje -= GAME_RACE;
- for(new i; i<MAX_USERS; i++) if(ZabawaZapisany[i] & GAME_RACE) {
- ZabawaZapisany[i] -= GAME_RACE;
- }
- RaceZapisani = 0;
- } else {
- ZabawaStartuje -= GAME_RACE;
- ZabawaTrwa += GAME_RACE;
- new Zapisani = CountZabawaZapisany(GAME_RACE);
- RaceCurrentStartIdx = RaceIndexSpawn(RaceNextScenario),
- RaceCurrentCPIdx = RaceIndexCP(RaceNextScenario);
- RaceCurrentIdx = RaceIndexID(RaceNextScenario);
- printf("StartGame(GAME_RACE) success. RaceCurrentIdx Scenario=%d", RaceCurrentIdx); //debug
- //wroc tu
- for(new i; i<Zapisani; i++) {
- RaceSamochody[i] = CreateVehicle(RInfo[RaceCurrentIdx][rModelid], RSpawn[RaceCurrentStartIdx][i][0], RSpawn[RaceCurrentStartIdx][i][1], RSpawn[RaceCurrentStartIdx][i][2],
- RInfo[RaceCurrentIdx][rStartAngle], random(128), random(128), 99999999);
- LinkVehicleToInterior(RaceSamochody[i], RInfo[RaceCurrentIdx][rInterior]);
- SetVehicleVirtualWorld(RaceSamochody[i], VIRTUALWORLD_RACE);
- }
- for(new i; i<MAX_USERS; i++) if(ZabawaZapisany[i] & GAME_RACE) {
- BeforeStartGame(i, GAME_RACE);
- ZabawaUczestniczy[i] = GAME_RACE;
- ZabawaZapisany[i] = GAME_NONE;
- ResetPlayerWeapons(i);
- SetPlayerInterior(i, RInfo[RaceCurrentIdx][rInterior]);
- SetPlayerVirtualWorld(i, VIRTUALWORLD_RACE);
- SetPlayerHealth(i, 100.0);
- }
- RaceNextScenario = RaceGetRandomScenario();
- RaceZapisani = 0;
- new str[160];
- format(str, 160, COLOR_RACE"Wyścigi {36C59A}rozpoczęte! Scenariusz: \"%s\". Zapisy na następną kolejkę otwarte.", RInfo[RaceCurrentIdx][rName]);
- SendClientMessageToAll(0x36C59AFF, str);
- }
- }
- }
- UpdateZabawyTD();
- return 1;
- }
- public Zabawy_OnPlayerDeath(playerid, killerid, reason) {
- if(ZabawaUczestniczy[playerid] & GAME_WG && ZabawaTrwa & GAME_WG) {
- if(killerid != INVALID_PLAYER_ID) { // jeżeli nie jest to samobójstwo
- if(GPVI(playerid, "WG_Team") == WG_TEAM_RED) Scores[WG_TEAM_GREEN]++;
- else Scores[WG_TEAM_RED]++;
- }
- if(GPVI(playerid, "WG_Team") == WG_TEAM_RED) WGCountPlayersRed--;
- else WGCountPlayersGreen--;
- DeletePVar(playerid, "WG_Team");
- ZabawaUczestniczy[playerid] = GAME_NONE;
- SetPlayerRandomColor(playerid);
- WGCheckFinish();
- }
- UpdateZabawyTD();
- return 1;
- }
- public Zabawy_OnPlayerDisconnect(playerid) {
- if(ZabawaZapisany[playerid] & GAME_WG) {
- ZabawaZapisany[playerid] -= GAME_WG;
- WGZapisani--;
- } else if(ZabawaUczestniczy[playerid] & GAME_WG && ZabawaTrwa & GAME_WG) {
- if(GPVI(playerid, "WG_Team") == WG_TEAM_RED) WGCountPlayersRed--;
- else WGCountPlayersGreen--;
- DeletePVar(playerid, "WG_Team");
- ZabawaUczestniczy[playerid] = GAME_NONE;
- WGCheckFinish();
- }
- UpdateZabawyTD();
- return 1;
- }
- public ZabawyInit() {
- new result[300], count;
- // WG
- for(new i; i<LIMIT_WG; i++) WGID[i] = -1;
- if(sql_query("SELECT * FROM zabawy_wg")) {
- mysql_store_result();
- while(mysql_fetch_row_format(result)) {
- sscanf(result, "p<|>ds[31]ffffffdddddddddffff", WGID[count], WGName[count], WGSpawnA[count][0], WGSpawnA[count][1], WGSpawnA[count][2],
- WGSpawnB[count][0], WGSpawnB[count][1], WGSpawnB[count][2], WGInterior[count], WGWeapons[count][0], WGWeapons[count][1], WGWeapons[count][2],
- WGWeapons[count][3], WGWeapons[count][4], WGWeapons[count][5], WGWeapons[count][6], WGWeapons[count][7], WGWorldBounds[count][wMinX], WGWorldBounds[count][wMaxX], WGWorldBounds[count][wMinY], WGWorldBounds[count][wMaxY]);
- printf("DEBUG ROW: %s", result);
- count++;
- }
- mysql_free_result();
- WGUpdateControlStr();
- WGNextScenario = WGGetRandomScenario();
- printf("WG_Init: Zaladowano %d scenariuszy.", count);
- } else {
- print("ERROR: Nie udalo sie wyslac zapytania wczytujacego scenariusze WG.");
- }
- // Race
- for(new i; i<LIMIT_RACE; i++) RInfo[i][rID] = -1;
- count = 0;
- if(sql_query("SELECT * FROM zabawy_race")) {
- mysql_store_result();
- while(mysql_fetch_row_format(result)) {
- sscanf(result, "p<|>e<ds[31]ddf>", RInfo[count++]);
- }
- mysql_free_result();
- printf("Race_Init: Zaladowano %d scenariuszy.", count);
- // Race->Pozycje startowe
- if(sql_query("SELECT rid, x, y, z FROM zabawy_race_start ORDER BY rid ASC, lp ASC")) {
- mysql_store_result();
- new lastRid = -1, cacheRid, currentIdx = -1, currentPos = -1, Float:cacheX, Float:cacheY, Float:cacheZ;
- while(mysql_fetch_row_format(result)) {
- sscanf(result, "p<|>dfff", cacheRid, cacheX, cacheY, cacheZ);
- if(lastRid != cacheRid) {
- currentIdx++;
- currentPos = 0;
- }
- RSpawn[currentIdx][currentPos][0] = cacheX;
- RSpawn[currentIdx][currentPos][1] = cacheY;
- RSpawn[currentIdx][currentPos][2] = cacheZ;
- RSpawnID[currentIdx] = cacheRid;
- lastRid = cacheRid;
- currentPos++;
- }
- mysql_free_result();
- } else print("ERROR: Nie udalo sie wyslac zapytania wczytujacego pozycje spawnu pojazdow na Race.");
- // Race->Pozycje race-checlpointów
- if(sql_query("SELECT rid, x, y, z FROM zabawy_race_cp ORDER BY rid ASC, lp ASC")) {
- mysql_store_result();
- new lastRid = -1, cacheRid, currentIdx = -1, currentPos = -1, Float:cacheX, Float:cacheY, Float:cacheZ;
- while(mysql_fetch_row_format(result)) {
- sscanf(result, "p<|>dfff", cacheRid, cacheX, cacheY, cacheZ);
- if(lastRid != cacheRid) {
- currentIdx++;
- currentPos = 0;
- }
- RCP[currentIdx][currentPos][0] = cacheX;
- RCP[currentIdx][currentPos][1] = cacheY;
- RCP[currentIdx][currentPos][2] = cacheZ;
- RCPID[currentIdx] = cacheRid;
- lastRid = cacheRid;
- currentPos++;
- }
- RaceUpdateControlStr();
- RaceNextScenario = RaceGetRandomScenario();
- mysql_free_result();
- } else print("ERROR: Nie udalo sie wyslac zapytania wczytujacego pozycje race-checkpointow na Race.");
- } else print("ERROR: Nie udalo sie wyslac zapytania wczytujacego scenariusze Race.");
- print_array_race(); //debug
- UpdateZabawyTD();
- return 1;
- }
- print_array_race() {
- if(fexist("RACE.txt")) fremove("RACE.txt");
- new File:hndl = fopen("RACE.txt", io_append);
- new str[200];
- for(new i; i<LIMIT_RACE; i++) if(RInfo[i][rID] != -1) {
- format(str, 200, "RInfo[%d] = {%d, %s, %d, %d, %f}\r\n", i, RInfo[i][rID], RInfo[i][rName], RInfo[i][rInterior], RInfo[i][rModelid], RInfo[i][rStartAngle]);
- fwrite(hndl, str);
- }
- fclose(hndl);
- if(fexist("RACE-SPAWN.txt")) fremove("RACE-SPAWN.txt");
- hndl = fopen("RACE-SPAWN.txt", io_append);
- fwrite(hndl, "RSpawn = {\r\n");
- for(new i; i<LIMIT_RACE; i++) {
- format(str, 200, "\t[%d] =>\r\n", i);
- fwrite(hndl, str);
- for(new a; a<LIMIT_RACE_START_POS; a++) {
- format(str, 200, "\t\t{%.1f, %.1f, %.1f}\r\n", RSpawn[i][a][0], RSpawn[i][a][1], RSpawn[i][a][2]);
- fwrite(hndl, str);
- }
- }
- fwrite(hndl, "}");
- fclose(hndl);
- if(fexist("RACE-CP.txt")) fremove("RACE-CP.txt");
- hndl = fopen("RACE-CP.txt", io_append);
- fwrite(hndl, "RCP = {\r\n");
- for(new i; i<LIMIT_RACE; i++) {
- format(str, 200, "\t[%d] =>\r\n", i);
- fwrite(hndl, str);
- for(new a; a<LIMIT_RACE_CP; a++) {
- format(str, 200, "\t\t{%.1f, %.1f, %.1f}\r\n", RCP[i][a][0], RCP[i][a][1], RCP[i][a][2]);
- fwrite(hndl, str);
- }
- }
- fwrite(hndl, "}");
- fclose(hndl);
- }
- /*
- enum enumRInfo { rID, rName[31], rInterior, rModelid, Float:rStartAngle }
- new RInfo[LIMIT_RACE][enumRInfo],
- RCPID[LIMIT_RACE],
- RSpawnID[LIMIT_RACE],
- Float:RCP[LIMIT_RACE][LIMIT_RACE_CP][3],
- Float:RSpawn[LIMIT_RACE][LIMIT_RACE_START_POS][3];
- */
- UpdateZabawyTD() {
- //"/wg~n~/race~n~/derby~n~/arena~n~/minigun~n~/wojsko"
- //"~r~trwa~n~~w~0/3~n~0/3~n~2/5~n~~r~trwa~n~~y~5~n~~w~0"
- //TextZabawa5
- new str[128], wg[9], race[9];
- if(ZabawaTrwa & GAME_WG) format(wg, sizeof(wg), "~r~TRWA");
- else if(ZabawaStartuje & GAME_WG) format(wg, sizeof(wg), "~p~%d", WGZapisani);
- else format(wg, sizeof(wg), "~w~%d/%d", WGZapisani, COUNT_TO_START_WG);
- if(ZabawaTrwa & GAME_RACE) format(race, sizeof(race), "~r~TRWA");
- else if(ZabawaStartuje & GAME_RACE) format(race, sizeof(race), "~p~%d", RaceZapisani);
- else format(race, sizeof(race), "~w~%d/%d", RaceZapisani, COUNT_TO_START_RACE);
- format(str, 128, "%s~n~%s~n~~w~0/6~n~0/5~n~0~n~0", wg, race);
- TextDrawSetString(TextZabawa5, str);
- printf("ZabawyTD updated.");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement