#include #include #include #include new logged[MAX_PLAYERS]; new money[MAX_PLAYERS]; new playername[MAX_PLAYER_NAME]; #define TEAM_HERO 1 // Team Vagos #define TEAM_CRIMINAL 2 // Team Ballas #define TEAM_ADMIN 3 #define COLOR_YELLOW 0xFFFF00AA #define COLOR_PINK 0xFF66FFAA #define COLOR_GREY 0xAFAFAFAA #define OBJECTIVE_COLOR 0xFFFF00AA #define COLOR_RED 0xCD5C5CAA #define COLOR_LIGHTBLUE 0x48D1CCAA #define COLOR_BLACK 0x000000AA #define COLOR_ERROR 0x800000AA #define COLOR_GREEN 0x00FF00AA #define COLOR_ADMIN 0xA52A2AAA new read[MAX_PLAYERS]; new Menu:RulesMenu; new Menu:Rules; new Text:gTextDraw; new LoggedHaha; new FrozenHaha; new frozen[MAX_PLAYERS]; static gTeam[MAX_PLAYERS]; forward SetPlayerToTeamColor(playerid); // Speler naar teamkleur zetten forward SetupPlayerForClassSelection(playerid); // Speler klaarmaken voor setup forward SetPlayerTeamFromClass(playerid,classid); // Speler in team zetten forward ExitTheGameMode(); // uit gamemode gaan forward LoggedIn(playerid); forward FrozenIn(playerid); main() { print("\n----------------------------------"); print(" RPG San Fierro Hero\n"); print("----------------------------------\n"); } public OnGameModeInit() { { SetGameModeText("RPG San Fierro Hero"); SetWorldTime(8); // tijd in uren. ShowNameTags(1); // Spelers namen boven health balk aan of uit. Nu aan ShowPlayerMarkers(1); // Blokjes op radar aan of uit? Nu aan // Vehicles Vagos ---------- Zet hier de autos van de Vagos neer // Vehicles Ballas ---------- Zet hier de autos van de Ballas neer AddPlayerClass(120, -1568.027, 681.1583, 7.1875,270.0,46,1,0,0,0,0); AddPlayerClass(228, -1568.027, 681.1583, 7.1875,270.0,46,1,0,0,0,0); AddPlayerClass(163, -1568.027, 681.1583, 7.1875,270.0,46,1,0,0,0,0); AddPlayerClass(22, -1496.554, 918.931, 7.1875,270.0,0,0,0,0,0,0); AddPlayerClass(1, -1496.554, 918.931, 7.1875,270.0,0,0,0,0,0,0); AddPlayerClass(1, -1496.554, 918.931, 7.1875,270.0,0,0,0,0,0,0); AddPlayerClass(22, -1519.892, 677.1359, 139.2734,270.0,46,1,0,0,0,0); gTextDraw = TextDrawCreate( 460.0, 420.0, "RPG San Fierro Hero!"); TextDrawFont(gTextDraw, 0); TextDrawUseBox(gTextDraw, 0); RulesMenu = CreateMenu("Accept rules? Or don't",1,200,200,400,35); AddMenuItem(RulesMenu, 0, "Read the rules"); AddMenuItem(RulesMenu, 0, "Agree"); AddMenuItem(RulesMenu, 0, "Disagree"); Rules = CreateMenu("The rules:",1,200,200,400,35); AddMenuItem(Rules, 0, "Do NOT hack~n~Do NOT spam~n~Do NOT ask for admin~n~Do NOT abuse glitches"); } return 1; } public OnPlayerConnect(playerid) { frozen[playerid] = 0; read[playerid] = 0; SetPlayerColor(playerid,COLOR_GREY); // Kleur GameTextForPlayer(playerid,"RPG San Fierro Hero",2000,5); // Text SendClientMessage(playerid, COLOR_RED, "Welcome to this gamemode"); SendClientMessage(playerid, COLOR_LIGHTBLUE, "Good luck, and have fun :)"); logged[playerid] = 0; EnableStuntBonusForAll(0); return 1; } public SetupPlayerForClassSelection(playerid) { SetPlayerInterior(playerid,11); SetPlayerPos(playerid,-1653.57,519.6589,53.62505); SetPlayerCameraPos(playerid,-1648.57,519.6584,53.62505); SetPlayerCameraLookAt(playerid,-1653.57,519.6589,53.62505); SetPlayerFacingAngle(playerid,0.0); } public SetPlayerTeamFromClass(playerid,classid) { if(classid == 0 || classid == 1 || classid == 2) { gTeam[playerid] = TEAM_HERO; } else if(classid == 3 || classid == 4 || classid == 5) { gTeam[playerid] = TEAM_CRIMINAL; } else if(classid == 6) { gTeam[playerid] = TEAM_ADMIN; } return 1; } public SetPlayerToTeamColor(playerid) { if(gTeam[playerid] == TEAM_HERO) { SetPlayerColor(playerid,COLOR_RED); // geel } else if(gTeam[playerid] == TEAM_CRIMINAL) { SetPlayerColor(playerid,COLOR_BLACK); // roze/paars } else if(gTeam[playerid] == TEAM_ADMIN) { SetPlayerColor(playerid,COLOR_ADMIN); // roze/paars } } public OnPlayerRequestClass(playerid, classid) { SetupPlayerForClassSelection(playerid); SetPlayerTeamFromClass(playerid,classid); if(classid == 0 || classid == 1 || classid == 2) { GameTextForPlayer(playerid,"~y~HERO",1000,5); } else if(classid == 3 || classid == 4 || classid == 5) { GameTextForPlayer(playerid,"~r~CRIMINAL",1000,5); } else if(classid == 6 || classid == 7 || classid == 8) { GameTextForPlayer(playerid,"~y~ADMIN",1000,5); } TextDrawHideForPlayer(playerid, gTextDraw); return 1; } public OnPlayerSpawn(playerid) { SetPlayerTeamFromClass(playerid, GetPlayerSkin(playerid)); SetPlayerToTeamColor(playerid); SetPlayerInterior(playerid,0); if(gTeam[playerid] == TEAM_HERO) { GameTextForPlayer(playerid,"Avoid the Terrorist!", 6000,5); } else if(gTeam[playerid] == TEAM_CRIMINAL) { GameTextForPlayer(playerid,"Kill the ~y~Minister!", 6000,5); } else if(gTeam[playerid] == TEAM_ADMIN) { if(IsPlayerAdmin(playerid) == 0) { SetPlayerHealth(playerid, 0.0); SendClientMessage(playerid, COLOR_RED, "You are NOT admin. You get killed"); } else { GameTextForPlayer(playerid,"Hello admin :)", 6000,5); read[playerid] = 1; } } if(logged[playerid] == 0) { frozen[playerid] = 1; FrozenHaha = SetTimer("FrozenIn", 1000, 999); LoggedHaha = SetTimer("LoggedIn", 1000, 999); } else { KillTimer(FrozenHaha); KillTimer(LoggedHaha); } if(read[playerid] == 0) { TextDrawShowForPlayer(playerid, gTextDraw); ShowMenuForPlayer(RulesMenu, playerid); } return 1; } public ExitTheGameMode() { GameModeExit(); } public OnPlayerDeath(playerid, killerid, reason) { new deathstr[256]; new whodiedname[MAX_PLAYER_NAME+1]; new whokilledname[MAX_PLAYER_NAME+1]; new deathreasonstr[256]; GetPlayerName(playerid,whodiedname,MAX_PLAYER_NAME); GetWeaponName(reason,deathreasonstr,255); if(killerid == INVALID_PLAYER_ID) { if(strlen(deathreasonstr)) { format(deathstr,256,"%s died (%s)",whodiedname,deathreasonstr); } else { format(deathstr,256,"%s died",whodiedname); } SendClientMessageToAll(OBJECTIVE_COLOR, deathstr); } else { GetPlayerName(killerid,whokilledname,MAX_PLAYER_NAME); if(gTeam[killerid] != gTeam[playerid]) { // Valid kill if(strlen(deathreasonstr)) { format(deathstr,256,"%s was killed by %s (%s)",whodiedname,whokilledname,deathreasonstr); } else { format(deathstr,256,"%s was killed by %s",whodiedname,whokilledname); } SendClientMessageToAll(OBJECTIVE_COLOR, deathstr); SetPlayerScore(killerid,GetPlayerScore(killerid)+1); } else { // Team kill format(deathstr,256,"%s killed team-mate %s (%s)",whokilledname,whodiedname,deathreasonstr); SendClientMessageToAll(OBJECTIVE_COLOR, deathstr); } } return 1; } public OnPlayerCommandText(playerid, cmdtext[]) { if (strcmp("/kill", cmdtext, true, 10) == 0) { SetPlayerHealth(playerid, 0.0); return 1; } if (strcmp("/credits", cmdtext, true, 10) == 0) { SendClientMessage(playerid, COLOR_GREEN, "Gamemode created by Jeroen"); SendClientMessage(playerid, COLOR_GREEN, "Thanks to =>Sandra<="); SendClientMessage(playerid, COLOR_GREEN, "Thanks to Sa-mp.com"); SendClientMessage(playerid, COLOR_GREEN, "Gamemode created by Jeroen"); return 1; } new cmd[256],tmp[256], tmp2[256]; new idx; new string[256]; cmd = strtok(cmdtext, idx); GetPlayerName(playerid, playername, sizeof(playername)); if(strcmp(cmd, "/register", true) == 0) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_YELLOW, "USAGE: /register (password)"); } else { if (!dini_Exists(udb_encode(playername))) { dini_Create(udb_encode(playername)); dini_IntSet(udb_encode(playername), "password", udb_hash(tmp)); dini_IntSet(udb_encode(playername), "money", 0); format(string, sizeof(string), "Account %s Created! You can now loggin with password: %s.", playername, tmp); SendClientMessage(playerid, COLOR_YELLOW, string); } else { format(string, sizeof(string), "%s already registered.", playername,tmp); SendClientMessage(playerid, COLOR_RED, string); } } return 1; } if(strcmp(cmd, "/login", true) == 0) { if(logged[playerid] == 1) { SendClientMessage(playerid, COLOR_RED, "You are already logged in!"); return 1; } tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_YELLOW, "Use: /login [password]"); } else { if (dini_Exists(udb_encode(playername))) { tmp2 = dini_Get(udb_encode(playername), "password"); if (udb_hash(tmp) != strval(tmp2)) { SendClientMessage(playerid, COLOR_RED, "Wrong password"); } else { frozen[playerid] = 1; logged[playerid] = 1; money[playerid] = dini_Int(udb_encode(playername), "money"); format(string, sizeof(string), "%s, you are now logged in! You've got %d dollar", playername, money[playerid]); SendClientMessage(playerid, COLOR_GREEN, string); GivePlayerMoney(playerid, money[playerid]); } } else { format(string, sizeof(string), "The account %s doesn't exist yet! Create an account by using /register [password]", playername); SendClientMessage(playerid, COLOR_RED, string); } } return 1; } if(strcmp(cmd, "/adkick", true) == 0 && IsPlayerAdmin(playerid) == 1) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)){ SendClientMessage(playerid, 0xD2691EAA, "USAGE: /adkick (id)"); return 1; } new kickedplayerid = strval(tmp); if(IsPlayerConnected(kickedplayerid)) { new kickname[24]; new adminname[24]; new kicked[256]; new giveplayerid = strval(tmp); GetPlayerName(giveplayerid, kickname, 24); GetPlayerName(playerid, adminname, 21); format(kicked, sizeof(kicked), "%s has been kicked by admin, %s", kickname, adminname); SendClientMessageToAll(0xFF7F50AA, kicked); Kick(kickedplayerid); } else { format(string, sizeof(string), "ID: %d Is not connected", kickedplayerid); SendClientMessage(playerid, 0xD2691EAA, string); } return 1; } if(strcmp(cmd, "/adhugg", true) == 0 && IsPlayerAdmin(playerid) == 1) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)){ SendClientMessage(playerid, 0xD2691EAA, "USAGE: /adhugg (id)"); return 1; } new huggedplayerid = strval(tmp); if(IsPlayerConnected(huggedplayerid)) { new huggname[24]; new adminname[24]; new hugged[256]; new giveplayerid = strval(tmp); GetPlayerName(giveplayerid, huggname, 24); GetPlayerName(playerid, adminname, 21); format(hugged, sizeof(hugged), "%s has been hugged by admin, %s", huggname, adminname); SendClientMessageToAll(0xFF7F50AA, hugged); GameTextForPlayer(huggedplayerid, "~p~You are hugged", 5000,6); GivePlayerMoney(huggedplayerid, 6000); } else { format(string, sizeof(string), "ID: %d Is not connected", huggedplayerid); SendClientMessage(playerid, 0xD2691EAA, string); } return 1; } if(strcmp(cmd, "/adban", true) == 0 && IsPlayerAdmin(playerid) == 1) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)){ SendClientMessage(playerid, 0xD2691EAA, "USAGE: /adban (id)"); return 1; } new bannedplayerid = strval(tmp); if(IsPlayerConnected(bannedplayerid)) { new banname[24]; new adminname[24]; new kicked[256]; new giveplayerid = strval(tmp); GetPlayerName(giveplayerid, banname, 24); GetPlayerName(playerid, adminname, 21); format(kicked, sizeof(kicked), "%s has been kicked by admin, %s", banname, adminname); SendClientMessageToAll(0xFF7F50AA, kicked); Ban(bannedplayerid); } else { format(string, sizeof(string), "ID: %d Is not connected", bannedplayerid); SendClientMessage(playerid, 0xD2691EAA, string); } return 1; } if(strcmp(cmd, "/adfreeze", true) == 0 && IsPlayerAdmin(playerid) == 1) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)){ SendClientMessage(playerid, 0xD2691EAA, "USAGE: /adfreeze (id)"); return 1; } new frozenplayerid = strval(tmp); if(IsPlayerConnected(frozenplayerid)) { new frozenname[24]; new adminname[24]; new frozen1[256]; new giveplayerid = strval(tmp); GetPlayerName(giveplayerid, frozenname, 24); GetPlayerName(playerid, adminname, 21); format(frozen1, sizeof(frozen1), "%s has been frozen by admin, %s", frozenname, adminname); SendClientMessageToAll(0xFF7F50AA, frozen1); TogglePlayerControllable(frozenplayerid, 0); } else { format(string, sizeof(string), "ID: %d Is not connected", frozenplayerid); SendClientMessage(playerid, 0xD2691EAA, string); } return 1; } if(strcmp(cmd, "/adunfreeze", true) == 0 && IsPlayerAdmin(playerid) == 1) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)){ SendClientMessage(playerid, 0xD2691EAA, "USAGE: /adunfreeze (id)"); return 1; } new unfrozenplayerid = strval(tmp); if(IsPlayerConnected(unfrozenplayerid)) { new unfrozenname[24]; new adminname[24]; new unfrozen[256]; new giveplayerid = strval(tmp); GetPlayerName(giveplayerid, unfrozenname, 24); GetPlayerName(playerid, adminname, 21); format(unfrozen, sizeof(unfrozen), "%s has been unfrozen by admin, %s", unfrozenname, adminname); SendClientMessageToAll(0xFF7F50AA, unfrozen); TogglePlayerControllable(unfrozenplayerid, 1); } else { format(string, sizeof(string), "ID: %d Is not connected", unfrozenplayerid); SendClientMessage(playerid, 0xD2691EAA, string); } return 1; } if(strcmp(cmd, "/adblow", true) == 0 && IsPlayerAdmin(playerid) == 1) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)){ SendClientMessage(playerid, 0xD2691EAA, "USAGE: /adblow (id)"); return 1; } new blowenplayerid = strval(tmp); if(IsPlayerConnected(blowenplayerid)) { new blowenname[24]; new adminname[24]; new blowen[256]; new giveplayerid = strval(tmp); GetPlayerName(giveplayerid, blowenname, 24); GetPlayerName(playerid, adminname, 21); format(blowen, sizeof(blowen), "%s has been blowen by admin, %s", blowenname, adminname); SendClientMessageToAll(0xFF7F50AA, blowen); new Float:x, Float:y, Float:z; GetPlayerPos(playerid, Float:x, Float:y, Float:z); CreateExplosion(Float:x, Float:y, Float:z, 9, 0); CreateExplosion(Float:x, Float:y, Float:z, 9, 0); CreateExplosion(Float:x, Float:y, Float:z, 9, 0); CreateExplosion(Float:x, Float:y, Float:z, 9, 0); } else { format(string, sizeof(string), "ID: %d Is not connected", blowenplayerid); SendClientMessage(playerid, 0xD2691EAA, string); } return 1; } if(strcmp(cmd, "/disarm", true) == 0 && IsPlayerAdmin(playerid) == 1) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)){ SendClientMessage(playerid, 0xD2691EAA, "USAGE: /disarm (id)"); return 1; } new disarmedplayerid = strval(tmp); if(IsPlayerConnected(disarmedplayerid)) { new disarmedname[24]; new adminname[24]; new disarmed[256]; new giveplayerid = strval(tmp); GetPlayerName(giveplayerid, disarmedname, 24); GetPlayerName(playerid, adminname, 21); format(disarmed, sizeof(disarmed), "%s has been disarmed by admin, %s", disarmedname, adminname); SendClientMessageToAll(0xFF7F50AA, disarmed); ResetPlayerWeapons(disarmedplayerid); } else { format(string, sizeof(string), "ID: %d Is not connected", disarmedplayerid); SendClientMessage(playerid, 0xD2691EAA, string); } return 1; } if(strcmp(cmd, "/reset", true) == 0 && IsPlayerAdmin(playerid) == 1) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)){ SendClientMessage(playerid, 0xD2691EAA, "USAGE: /reset (id)"); return 1; } new resettenplayerid = strval(tmp); if(IsPlayerConnected(resettenplayerid)) { new resetname[24]; new adminname[24]; new resetten[256]; new giveplayerid = strval(tmp); GetPlayerName(giveplayerid, resetname, 24); GetPlayerName(playerid, adminname, 21); format(resetten, sizeof(resetten), "Account: %s has been resetten by admin, %s", resetname, adminname); SendClientMessageToAll(0xFF7F50AA, resetten); ResetPlayerWeapons(resettenplayerid); ResetPlayerMoney(resettenplayerid); SetPlayerHealth(resettenplayerid, 100.0); SetPlayerArmour(resettenplayerid, 0.0); SetPlayerScore(resettenplayerid, 0); } else { format(string, sizeof(string), "ID: %d Is not connected", resettenplayerid); SendClientMessage(playerid, 0xD2691EAA, string); } return 1; } if(strcmp(cmd, "/goto", true) == 0 && IsPlayerAdmin(playerid) == 1) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)){ SendClientMessage(playerid, 0xD2691EAA, "USAGE: /goto (id)"); return 1; } new gotoplayerid = strval(tmp); if(IsPlayerConnected(gotoplayerid)) { new gotoname[24]; new typedname[24]; new adminname[24]; new giveplayerid = strval(tmp); GetPlayerName(playerid, typedname, 24); GetPlayerName(giveplayerid, gotoname, 24); GetPlayerName(playerid, adminname, 21); new Float:x, Float:y, Float:z; GetPlayerPos(gotoplayerid, Float:x, Float:y, Float:z); SetPlayerPos(playerid, Float:x, Float:y, Float:z); } else { format(string, sizeof(string), "ID: %d Is not connected", gotoplayerid); SendClientMessage(playerid, 0xD2691EAA, string); } return 1; } if(strcmp(cmd, "/bring", true) == 0 && IsPlayerAdmin(playerid) == 1) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)){ SendClientMessage(playerid, 0xD2691EAA, "USAGE: /bring (id)"); return 1; } new bringplayerid = strval(tmp); if(IsPlayerConnected(bringplayerid)) { new bringname[24]; new typedname[24]; new adminname[24]; new giveplayerid = strval(tmp); GetPlayerName(playerid, typedname, 24); GetPlayerName(giveplayerid, bringname, 24); GetPlayerName(playerid, adminname, 21); new Float:x, Float:y, Float:z; GetPlayerPos(playerid, Float:x, Float:y, Float:z); SetPlayerPos(bringplayerid, Float:x, Float:y, Float:z); } else { format(string, sizeof(string), "ID: %d Is not connected", bringplayerid); SendClientMessage(playerid, 0xD2691EAA, string); } return 1; } if(strcmp(cmd, "/say", true) == 0 && IsPlayerAdmin(playerid) == 1) { if(cmdtext[5] == 0) { SendClientMessage(playerid, 0xFF0000FF, "USAGE: /say [action]"); return 1; } new str[128]; GetPlayerName(playerid, str, sizeof(str)); format(str, sizeof(str), "*Admin %s says: %s", str, cmdtext[5]); SendClientMessageToAll(0x48D1CCAA, str); return 1; } if(strcmp(cmd, "/adan", true) == 0 && IsPlayerAdmin(playerid) == 1) { if(cmdtext[5] == 0) { SendClientMessage(playerid, 0xFF0000FF, "USAGE: /adan [text]"); return 1; } new str[128]; format(str, sizeof(str), "*Admin %s says: %s", str, cmdtext[5]); return 1; } return 0; } public OnPlayerSelectedMenuRow(playerid, row) { TogglePlayerControllable(playerid, 1); new Menu:Current = GetPlayerMenu(playerid); if (Current == RulesMenu) { switch(row) { case 0: {ShowMenuForPlayer(Rules, playerid); TogglePlayerControllable(playerid, 0);} case 1: {TogglePlayerControllable(playerid, 1); read[playerid] = 1;} case 2: {Kick(playerid);} } } if (Current == Rules) { switch(row) { case 0: {ShowMenuForPlayer(RulesMenu, playerid); TogglePlayerControllable(playerid, 0);} } } return 1; } public OnPlayerExitedMenu(playerid) { new Menu:Current = GetPlayerMenu(playerid); if (Current == RulesMenu || Rules) { TogglePlayerControllable(playerid, 0); ShowMenuForPlayer(RulesMenu, playerid); } else { TogglePlayerControllable(playerid, 0); } return 1; } public OnPlayerDisconnect(playerid, reason) { money[playerid] = GetPlayerMoney(playerid); dini_IntSet(udb_encode(playername), "money", money[playerid]); logged[playerid] = 0; return 1; } public LoggedIn(playerid) { if(logged[playerid] == 0) { TogglePlayerControllable(playerid, false); GameTextForPlayer(playerid, "/login [password] before spawning!", 2000, 1); } } public FrozenIn(playerid) { if(frozen[playerid] == 1 && logged[playerid] == 1) { TogglePlayerControllable(playerid, true); KillTimer(LoggedHaha && FrozenHaha); } }