Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define LICZBA_DB 2
- #define MAX_PLAYERS_DB 16
- #define DB_VW 2
- new Iterator:DerbyPlayers<MAX_PLAYERS>;
- #define DB_STATE_RECORDS 0
- #define DB_STATE_BEFORE_START 1
- #define DB_STATE_IN_PROGRESS 2
- new DerbyState = DB_STATE_RECORDS;
- #define DB_PLAYER_STATE_SIGNED 1
- new DerbyPlayerState[MAX_PLAYERS];
- new DerbyPlayerVehicle[MAX_PLAYERS];
- #define DB_REMOVE_REASON_EXIT 0
- #define DB_REMOVE_REASON_VEHICLE_EXIT 1
- #define DB_REMOVE_REASON_AFK 2
- #define DB_REMOVE_REASON_DROWNED 3
- #define DB_REMOVE_REASON_QUIT 4
- #define DB_REMOVE_REASON_END 5
- new DerbyVehicles[MAX_PLAYERS_DB];
- new Float:DerbyVehiclesPos[MAX_PLAYERS_DB][4] = {
- {2888.95605469, 492.40585327, 78.79947662, 270.25817871},
- {2888.88085938, 467.74752808, 78.79947662, 270.25817871},
- {2889.25000000, 442.15625000, 78.79947662, 270.25817871},
- {2904.11474609, 423.76696777, 78.77447510, 0.25817871},
- {2930.58251953, 424.04306030, 78.77447510, 0.25817871},
- {2958.39892578, 423.78359985, 78.77447510, 0.25817871},
- {2986.80200195, 424.27566528, 78.77447510, 0.25817871},
- {3001.86645508, 442.33184814, 78.79947662, 90.25817871},
- {3002.02978516, 467.72830200, 78.79947662, 90.25817871},
- {3001.50488281, 492.68856812, 78.79947662, 90.25817871},
- {3001.78491211, 519.28485107, 78.77447510, 90.25817871},
- {2985.99145508, 536.43664551, 78.77447510, 180.25817871},
- {2957.25537109, 536.47650146, 78.77447510, 180.25817871},
- {2929.47705078, 536.85388184, 78.77447510, 180.25817871},
- {2903.21923828, 536.34606934, 78.77447510, 180.25817871},
- {2888.98461914, 519.35327148, 78.79947662, 270.25817871}
- };
- CMD:db(playerid, params[])
- {
- cmd_derby(playerid, params);
- return 1;
- }
- CMD:derby(playerid, params[])
- {
- if( DerbyPlayerState[playerid] == DB_PLAYER_STATE_SIGNED ) return SendClientMessage(playerid, C_RED2, "Bierzesz już udział w derbach.");
- if( pInfo[playerid][player_attraction_apply] ) return SendClientMessage(playerid, C_RED2, "Bierzesz już udział w innej zabawie.");
- if( DerbyState == DB_STATE_IN_PROGRESS ) return SendClientMessage(playerid, C_RED2, "Derby już wystartowały.");
- if( Iter_Count(DerbyPlayers) == MAX_PLAYERS_DB ) return SendClientMessage(playerid, C_RED2, "Na derby zapisała się już maksymalna ilość graczy.");
- SendClientMessage(playerid, C_GREEN, "[Derby] Zapisałeś się na derby");
- pInfo[playerid][player_attraction_apply] = true;
- Iter_Add(DerbyPlayers, playerid);
- DerbyPlayerState[playerid] = DB_PLAYER_STATE_SIGNED;
- ZapisyUpdate();
- if(Iter_Count(DerbyPlayers) == LICZBA_DB && DerbyState != DB_STATE_IN_PROGRESS )
- {
- SendClientMessageToAll(0xA346FFFF, "[Derby] Zapisy na derby zakończą się za 20 sekund po czym zabawa wystartuje.");
- DerbyState = DB_STATE_BEFORE_START;
- defer DerbyStart();
- }
- return 1;
- }
- CMD:dbexit(playerid,cmdtext[])
- {
- DerbyRemovePlayer(playerid, DB_REMOVE_REASON_EXIT);
- return 1;
- }
- CMD:dbend(playerid,cmdtext[])
- {
- if( pInfo[playerid][player_crew_level] < CREW_LEVEL_MODERATOR ) return SendClientMessage(playerid, C_RED2, "•• |Info| Nie jesteś administratorem ani moderatorem!");
- SendClientMessageToAll(C_INFO,"•• |Info| Derby zostały przerwane przez administratora!");
- DerbyEnd();
- return 1;
- }
- stock ChangeVehicleEngineState(vehicleid, bool:e_state)
- {
- new engine, lights, alarm, doors, bonnet, boot, objective;
- GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
- SetVehicleParamsEx(vehicleid, e_state, lights, alarm, doors, bonnet, boot, objective);
- }
- timer DerbyStart[20000]()
- {
- new nr = 0;
- foreach(new p : DerbyPlayers)
- {
- ResetPlayerWeapons(p);
- DerbyVehicles[nr] = CreateVehicle(429, DerbyVehiclesPos[nr][0], DerbyVehiclesPos[nr][1], DerbyVehiclesPos[nr][2], DerbyVehiclesPos[nr][3], -1, -1, -1);
- SetVehicleHealth(DerbyVehicles[nr], 999999);
- SetVehicleVirtualWorld(DerbyVehicles[nr], DB_VW);
- ChangeVehicleEngineState(DerbyVehicles[nr], false);
- SetPlayerPos(p, DerbyVehiclesPos[nr][0], DerbyVehiclesPos[nr][1], DerbyVehiclesPos[nr][2]);
- SetPlayerVirtualWorld(p, DB_VW);
- PutPlayerInVehicle(p, DerbyVehicles[nr], 0);
- DerbyPlayerVehicle[p] = nr;
- nr ++;
- }
- defer DerbyEnginesOn[5000]();
- return 1;
- }
- timer DerbyEnginesOn[100]()
- {
- foreach(new p : DerbyPlayers)
- {
- ChangeVehicleEngineState(DerbyVehicles[DerbyPlayerVehicle[p]], true);
- }
- DerbyState = DB_STATE_IN_PROGRESS;
- ZapisyUpdate();
- SendClientMessageToAll(C_ZABAWA,"[Derby] Zabawa derby wystartowała!");
- }
- hook OnPlayerDisconnectDB(playerid, reason)
- {
- if( Iter_Contains(DerbyPlayers, playerid) )
- {
- DerbyRemovePlayer(playerid, DB_REMOVE_REASON_QUIT);
- return 1;
- }
- return 1;
- }
- stock DerbyRemovePlayer(playerid, reason, clean = true)
- {
- switch( reason )
- {
- case DB_REMOVE_REASON_DROWNED:
- {
- SendClientMessage(playerid, C_RED2, "[Derby] Zostałeś usunięty z derb ponieważ spadłeś.");
- }
- case DB_REMOVE_REASON_VEHICLE_EXIT:
- {
- SendClientMessage(playerid, C_RED2, "[Derby] Zostałeś usunięty z derb ponieważ wyszedłeś z pojazdu.");
- }
- case DB_REMOVE_REASON_AFK:
- {
- SendClientMessage(playerid, C_RED2, "[Derby] Zostałeś usunięty z derb ponieważ wszedłeś na afk.");
- }
- case DB_REMOVE_REASON_EXIT:
- {
- if( DerbyState == DB_STATE_IN_PROGRESS ) SendClientMessage(playerid, C_RED2, "[Derby] Wyszedłeś z derb.");
- else SendClientMessage(playerid, C_GREEN, "[Derby] Wypisałeś się z derb.");
- }
- }
- DerbyPlayerState[playerid] = 0;
- new player;
- if( clean )
- {
- Iter_SafeRemove(DerbyPlayers, playerid, player);
- }
- printf("playerid: %d", playerid);
- printf("DerbyPlayerVehicle: %d", DerbyPlayerVehicle[playerid]);
- if( DerbyPlayerVehicle[playerid] > 0 && IsValidVehicle(DerbyVehicles[DerbyPlayerVehicle[playerid]]) )
- {
- DestroyVehicle(DerbyVehicles[DerbyPlayerVehicle[playerid]]);
- DerbyPlayerVehicle[playerid] = 0;
- }
- if( DerbyState == DB_STATE_IN_PROGRESS || (DerbyState < DB_STATE_IN_PROGRESS && reason != DB_REMOVE_REASON_EXIT) ) SpawnPlayer(playerid);
- pInfo[playerid][player_attraction_apply] = false;
- DerbyRefreshData();
- ZapisyUpdate();
- return player;
- }
- task DerbyCheck[400]()
- {
- if( DerbyState == DB_STATE_IN_PROGRESS )
- {
- foreach(new p : DerbyPlayers)
- {
- new
- Float:pos[3];
- GetPlayerPos(p, pos[0], pos[1], pos[2]);
- if( pos[2] < 40.0 )
- {
- DerbyRemovePlayer(p, DB_REMOVE_REASON_DROWNED);
- }
- else if( !IsPlayerInAnyVehicle(p) )
- {
- DerbyRemovePlayer(p, DB_REMOVE_REASON_VEHICLE_EXIT);
- }
- else if( AFK[p] )
- {
- DerbyRemovePlayer(p, DB_REMOVE_REASON_AFK);
- }
- }
- }
- }
- stock DerbyRefreshData()
- {
- if( DerbyState < DB_STATE_IN_PROGRESS ) return 1;
- if( Iter_Count(DerbyPlayers) == 1 )
- {
- new playerid = Iter_First(DerbyPlayers);
- new str[64];
- format(str,sizeof(str),"[Derby] Zabawe derby wygrywa %s, gratulacje!", pInfo[playerid][player_name]);
- SendClientMessageToAll(0xA346FFFF,str);
- WinSound(playerid);
- if(pInfo[playerid][player_logged])
- {
- GameTextForPlayer(playerid,"respekt~n~~g~+15", 1000, 1);
- pInfo[playerid][player_respect] += 15;
- }
- DerbyEnd();
- return 1;
- }
- return 1;
- }
- stock DerbyEnd()
- {
- DerbyState = DB_STATE_RECORDS;
- foreach(new p : DerbyPlayers)
- {
- DerbyRemovePlayer(p, DB_REMOVE_REASON_END, false);
- }
- Iter_Clear(DerbyPlayers);
- ZapisyUpdate();
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment