//include #include #include #include #include #include #include static gTeam[MAX_PLAYERS]; new gPlayerClass[MAX_PLAYERS]; new logged[MAX_PLAYERS]; new zlehaslo[MAX_PLAYERS]; new logintimeout[MAX_PLAYERS]; new giveplayer[MAX_PLAYER_NAME]; new sendername[MAX_PLAYER_NAME]; #define FILE_TOTALSTAT "totalstat.ini" //------------dcmd-------------- #define dcmd(%1,%2,%3) if ((strcmp(%3, "/%1", true, %2+1) == 0)&&(((%3[%2+1]==0)&&(dcmd_%1(playerid,"")))||((%3[%2+1]==32)&&(dcmd_%1(playerid,%3[%2+2]))))) return 1 new gRoundTime = 3600000; // 60 minut new savePos; new giveplayerid; //--TEAM-------------------------- #define TEAM_GROVE 0 #define TEAM_GROVE_COLOR 0x0080FFFF #define TEAM_BALLAS 1 #define TEAM_BALLAS_COLOR 0x9E3DFFAA #define TEAM_VAGOS 2 #define TEAM_VAGOS_COLOR 0xFFD700AA #define TEAM_AZTECAS 3 #define TEAM_AZTECAS_COLOR 0x00CED3AA //kolory #define COLOR_GREEN 0x33AA33AA #define COLOR_GREY 0xAFAFAFAA #define FIOLETOWY 0x9E3DFFAA #define COLOR_LIGHTBLUE 0x0000FFAA #define BEZOWY 0xFFFFADAA #define BIALY 0xFFFFFFAA #define BLEKITNY 0x00FFFFAA #define BORDOWY 0x99001FAA #define BRAZOWY 0x997A00AA #define CIEMNY_ZIELONY 0x336633AA #define CZARNY 0x000000AA #define CZERWONY 0xFF0000AA #define FIOLETOWY 0x9E3DFFAA #define NIEBIESKI 0x0000FFAA #define POMARANCZOWY 0xFF8000AA #define ROZOWY 0xFF66CCAA #define SZARY 0xB0B0B0AA #define ZIELONY 0x00CC00AA #define ZOLTY 0xFFFF00AA #define MAX_SAVE 64 new savedNames[MAX_SAVE][1]; new savedMoney[MAX_SAVE][1]; new savedScore[MAX_SAVE][1]; // //----------------------------------------------------------------------------- main() { print("\n----------------------------------"); print(" LS Gang War Beta " ); print("----------------------------------\n"); } public OnGameModeInit() { print("GameModeInit(LS Gang war 0.1)"); SetGameModeText("LS Gang War 0.1"); SetTimer("GameModeExitFunc", gRoundTime, 0); //Skiny //plaerys AddPlayerClass(107,2495.2207,-1687.3169,13.5152,351.7600,0,0,29,650,22,260); // Grove AddPlayerClass(106,2495.2207,-1687.3169,13.5152,351.7600,0,0,29,650,22,260); // Grove AddPlayerClass(105,2495.2207,-1687.3169,13.5152,351.7600,0,0,29,650,22,260); // Grove AddPlayerClass(195,2495.2207,-1687.3169,13.5152,351.7600,0,0,29,650,22,260); // Grove AddPlayerClass(102,832.2958,-1080.4476,24.2969,184.2249,4,0,25,320,32,550); // Ballas 1 AddPlayerClass(103,832.2958,-1080.4476,24.2969,184.2249,4,0,25,320,32,550); // Ballas 2 AddPlayerClass(104,832.2958,-1080.4476,24.2969,184.2249,4,0,25,320,32,550); // Ballas 3 AddPlayerClass(110,2459.0442,-949.4450,80.0800,180.7668,4,0,28,600,27,160); // Vagos AddPlayerClass(109,2459.0442,-949.4450,80.0800,180.7668,4,0,28,600,27,160); // Vagos AddPlayerClass(108,2459.0442,-949.4450,80.0800,180.7668,4,0,28,600,27,160); // Vagos AddPlayerClass(114,1761.7893,-1892.7225,13.5551,269.0211,22,280,29,545,25,180); // Aztecas AddPlayerClass(115,1761.7893,-1892.7225,13.5551,269.0211,22,280,29,545,25,180); // Aztecas AddPlayerClass(116,1761.7893,-1892.7225,13.5551,269.0211,22,280,29,545,25,180); // Aztecas //samochody //TEAM BALLAS AddStaticVehicle(566,1884.9437,-1266.3868,13.2813,94.9774,95,1); AddStaticVehicle(566,1854.9448,-1210.8865,20.1397,0.8816,83,1); AddStaticVehicle(566,1967.0892,-1219.9951,24.9483,182.0590,83,1); AddStaticVehicle(481,1991.1158,-1230.2188,19.9276,130.2759,3,3); AddStaticVehicle(481,1883.8904,-1253.2983,13.0437,88.8027,6,6); return 1; } public OnPlayerConnect(playerid) { GameTextForPlayer(playerid,"Los santos: ~r~Gang War",2500,5); SendClientMessage(playerid,ZOLTY,"Witaj na serverze LS Gang War jezeli chcesz uzyskac pomoc wpisz /pomoc"); GivePlayerMoney(playerid, 1000); SetPlayerColor(playerid, COLOR_GREY); // Color na poczatku if(gTeam[playerid] == TEAM_GROVE) { SetPlayerColor(playerid, SZARY); for(new i = 0; i < MAX_SAVE; i++) { if(isStringSame(savedNames[i], ReturnPlayerName(playerid), MAX_PLAYER_NAME)) { StatGivePlayerMoney(playerid, savedMoney[i][0]); SetPlayerScore(playerid, savedScore[i][0]); savedScore[i][0]=0; savedMoney[i][0]=0; SendClientMessage(playerid, POMARANCZOWY, "Twoje pieniądze i punkty zostały przywrócone!"); } } new playername[MAX_PLAYER_NAME]; GetPlayerName(playerid, playername[playerid], MAX_PLAYER_NAME); if (dini_Exists(udb_encode(playername[playerid]))) {SendClientMessage(playerid,CZERWONY,"Twoj nick jest zarejstrowany jesli nie zalogujesz sie w ciagu 20 sekund zostaniesz wyrzucony!"); logintimeout[playerid] = SetTimer("LoginTimeout", 20000, 0); new bmp[256]; bmp=dini_Get(udb_encode(playername),"kasa"); } else { SendClientMessage(playerid, ZIELONY, "* Witamy, możesz się zarejestrować komendą: /register [hasło]"); logged[playerid] = 1; } } } public OnGameModeExit() { print("GameModeExit()"); return 1; } public zapisz(playerid) { new string[256]; new playername[MAX_PLAYER_NAME]; GetPlayerName(playerid, playername, MAX_PLAYER_NAME); if (dini_Exists(udb_encode(playername))) { dini_IntSet(udb_encode(playername),"kasa",GetPlayerMoney(playerid)); } else { format(string, sizeof(string), "* %s nie ma takiego konta.", playername); SendClientMessage(playerid, CZERWONY, string); } return 1; } //--------------------------------------------------------------------------------------- //------------------------------------------------------------------------------------------------------ public OnPlayerRequestClass(playerid, classid) { SetPlayerClass(playerid, classid); SetupPlayerForClassSelection(playerid); gPlayerClass[playerid] = classid; switch (classid) { case 0,1,2: { GameTextForPlayer(playerid, "~g~GROVE", 500, 3); SetPlayerInterior(playerid,0); SetPlayerPos(playerid,2495.2227,-1686.6245,13.5142); SetPlayerFacingAngle(playerid, 70.0); SetPlayerCameraPos(playerid,2494.6362,-1679.8091,13.3386); SetPlayerCameraLookAt(playerid,2494.6362,-1579.8091,13.3386); } case 3,4,5:{ GameTextForPlayer(playerid, "~p~BALLAS", 500, 3); } case 6,7,8: { GameTextForPlayer(playerid, "~y~VAGOS", 500, 3); } case 9,10,11: { GameTextForPlayer(playerid, "~b~AZTECAS", 500, 3); } } return 1; } //---------------------------------------------------------------------------------------- public OnPlayerDisconnect(playerid) {{ format(savedNames[savePos], MAX_PLAYER_NAME, "%s",ReturnPlayerName(playerid)); savedMoney[savePos][0] = GetPlayerMoney(playerid); savedScore[savePos][0] = GetPlayerScore(playerid); savePos++; if(savePos >= MAX_SAVE) savePos = 0; zapisz(playerid); } return 1; } //---------------------------------------------------------------------------------------- public LoginTimeout() { for (new i=0;i 0) tmp=dini_Get(FILE_TOTALSTAT,"pieniadzezdobyte"); dini_IntSet(FILE_TOTALSTAT,"pieniadzezdobyte",strval(tmp)+amount); } else { tmp = dini_Get(FILE_TOTALSTAT, "pieniadzestracone"); dini_IntSet(FILE_TOTALSTAT, "pieniadzestracone", strval(tmp)-amount); } else { SendClientMessage(playerid, CZERWONY, "* Uwaga!!! Masz maximum pieniędzy. Nie możesz mieć ich więcej przy sobie!"); SendClientMessage(playerid, CZERWONY, "* Udaj się do banku, aby wpłacić pieniądze na konto. Banki są w sklepach 24/7"); return 0; } } return 1; } //--------------------------------------------------------------------------------- public OnVehicleSpawn(vehicleid) { printf("OnVehicleSpawn(%d)", vehicleid); return 1; } //--------------------------------------------------------------------------------- public OnVehicleDeath(vehicleid, killerid) { printf("OnVehicleDeath(%d, %d)", vehicleid, killerid); return 1; } //--------------------------------------------------------------------------------------------- public OnPlayerText(playerid,text[]) { //TEAM CHAT if(text[0] == '!') { new name[24], string[256]; GetPlayerName(playerid, name, 24); format(string, sizeof(string), "[TC] %s: %s", name, text[1]); for(new i = 0; i < MAX_PLAYERS; i++) { if(IsPlayerConnected(i)) { if(gTeam[i] == gTeam[playerid]) SendClientMessage(i, COLOR_LIGHTBLUE, string); } } return 0; } return 1; } //------------------------------------------------------------------------------------ public OnPlayerCommandText(playerid, cmdtext[]){ dcmd(register, 8, cmdtext); dcmd(login, 5, cmdtext); dcmd(pomoc, 5, cmdtext); dcmd(givecash, 8, cmdtext); return SendClientMessage(playerid, CZERWONY, "SERVER: Nie ma takiej komendy!"); } dcmd_register(playerid, cmdtext[]) { { new tmp[256]; new tmp2[256]; new idx; new playername[MAX_PLAYERS]; new string[256]; { tmp2=dini_Get(FILE_TOTALSTAT,"Gracze"); tmp=strtok(cmdtext,idx); GetPlayerName(playerid, playername, sizeof(playername)); if (20>> %s <<< Zapamiętaj je!!!", playername, playerid, tmp); SendClientMessage(playerid, ZIELONY, string); } else { format(string, sizeof(string), "* %s jest już zarejestrowany.", playername,tmp); SendClientMessage(playerid, CZERWONY, string); } return 1; } } } //------------------------------------------------------------------------------ dcmd_login(playerid, cmdtext[]){ new tmp[256]; new tmp2[256]; new idx; new playername[MAX_PLAYERS]; new string[256]; tmp=strtok(cmdtext,idx); GetPlayerName(playerid,playername,sizeof(playername)); if(!strlen(tmp)) { SendClientMessage(playerid,CZERWONY,"Wpisz:/login [haslo]"); } if (dini_Exists(udb_encode(playername))) { if (logged[playerid]== 1) { SendClientMessage(playerid, CZERWONY, "* Jesteś już zalogowany!"); } else { tmp2=dini_Get(udb_encode(playername),"haslo"); } if (udb_hash(tmp) != strval(tmp2)){ format(string, sizeof(string), "* %s (id: %d) wpisałeś złe hasło: %s.", playername, playerid, tmp); printf(string); SendClientMessage(playerid, CZERWONY, "* Podałeś złe hasło."); GameTextForPlayer(playerid, "~r~Zle haslo!", 3000, 5); zlehaslo[playerid]++; if (zlehaslo[playerid] >= 5) KickMsg(playerid, "Ochrona", "Za dużo prób!"); } else { logged[playerid] = 1; KillTimer(logintimeout[playerid]); logged[playerid] = 1; format(string, sizeof(string), "--- %s (id: %d) zalogowany . haslo: %s.", playername, playerid, tmp); printf(string); SendClientMessage(playerid, COLOR_GREEN, "* JEstes zalogowany!"); } } return 1; } //------------------------------------------------------------------------------ dcmd_pomoc(playerid,cmdtext[]) { #pragma unused cmdtext SendClientMessage(playerid, ZOLTY,"Witaj na LS Gang War aby zobaczyc liste komend wpisz /komendy"); return 1; } dcmd_givecash(playerid, cmdtext[]) { new idx; new string[256]; new tmp[256]; new playermoney; new moneys; tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, BIALY, "* WPISZ: /givecash [idgracza] [kwota]"); return 1; } giveplayerid = strval(tmp); tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, BIALY, "* WPISZ: /givecash [idgracza] [kwota]"); return 1; } moneys = strval(tmp); if (IsPlayerConnected(giveplayerid)) { GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer)); GetPlayerName(playerid, sendername, sizeof(sendername)); playermoney = GetPlayerMoney(playerid); if (giveplayerid == playerid) { SendClientMessage(playerid, CZERWONY, "* Nie możesz wysłać sobie pieniędzy!"); return 1; } if (moneys > 0 && playermoney >= moneys) { StatGivePlayerMoney(playerid, (0 - moneys)); StatGivePlayerMoney(giveplayerid, moneys); format(string, sizeof(string), "* Oddałeś/aś graczowi %s (id: %d), $%d pieniędzy.", giveplayer,giveplayerid, moneys); SendClientMessage(playerid, ZOLTY, string); format(string, sizeof(string), "* Otrzymałeś/aś $%d pieniędzy od gracza %s (id: %d).", moneys, sendername, playerid); SendClientMessage(giveplayerid, ZIELONY, string); } else { SendClientMessage(playerid, CZERWONY, "* Nieprawidłowa kwota transakcji."); } } else { format(string, sizeof(string), "* %d nie ma takiego gracza!", giveplayerid); SendClientMessage(playerid, CZERWONY, string); } return 1; } //------------------------------------------------------------------------------ public KickMsg(playerid, kickername[], reason[]) { new string[256]; new tmp[256]; new playername[MAX_PLAYER_NAME]; format(string, sizeof(string), "*** %s (id: %d) został/ła wyrzucony/na przez administratora: %s. Powód: %s ***", playername, playerid, kickername, reason); GetPlayerName(playerid,playername,sizeof(playername)); printf(string); SendClientMessageToAll(CZERWONY, string); Kick(playerid); tmp=dini_Get(FILE_TOTALSTAT,"kicki"); dini_IntSet(FILE_TOTALSTAT, "kicki", strval(tmp)+1); return 1; } //------------------------------------------------------------------------------ public SavedUpdate() { for(new i = 0; i < MAX_SAVE; i++) { savedScore[i][0] = 0; savedMoney[i][0] = 0; savedNames[i][0] = 0; } } //------------------------------------------------------------------------------ public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger) { printf("OnPlayerEnterVehicle(%d, %d, %d)", playerid, vehicleid, ispassenger); return 1; } public OnPlayerExitVehicle(playerid, vehicleid) { printf("OnPlayerExitVehicle(%d, %d)", playerid, vehicleid); return 1; } public OnPlayerEnterCheckpoint(playerid) { printf("OnPlayerEnterCheckpoint(%d)", playerid); return 1; } public SetupPlayerForClassSelection(playerid) { SetPlayerInterior(playerid,14); SetPlayerPos(playerid,258.4893,-41.4008,1002.0234); SetPlayerFacingAngle(playerid, 90.0); SetPlayerCameraPos(playerid,256.0815,-43.0475,1003.0234); SetPlayerCameraLookAt(playerid,258.4893,-41.4008,1002.0234); } //----------------------------------------------------------------------------- public OnPlayerLeaveCheckpoint(playerid) { printf("OnPlayerLeaveCheckpoint(%d)", playerid); return 1; } public PlayerName(playerid){ new Name[MAX_PLAYER_NAME]; GetPlayerName(playerid, Name, sizeof(Name)); return Name; } public LogIn(playerid) { logged[playerid]=1; return 1; } isStringSame(const string1[], const string2[], len) { for(new i = 0; i < len; i++) { if(string1[i]!=string2[i]) return 0; if(string1[i] == 0 || string1[i] == '\n') return 1; } return 1; } public ReturnPlayerName(playerid) //By Alex "Y_Less" Cole { new pname[MAX_PLAYER_NAME]; GetPlayerName(playerid, pname, sizeof (pname)); return pname; } public Killer(killerid) { new killer[MAX_PLAYER_NAME]; GetPlayerName(killerid, killer, sizeof(killer)); return killer; } //-------------------------------------------------------------------------------- //------------------------------------------------------------------------------- SetPlayerClass(playerid, classid) { if(classid == 0) { gTeam[playerid] = TEAM_GROVE; } else if(classid==1) { gTeam[playerid] = TEAM_BALLAS; } else if(classid==2) { gTeam[playerid] = TEAM_VAGOS; } else if(classid==3) { gTeam[playerid] = TEAM_AZTECAS; } }