/* Deathmatch class selection example Script by G-sTyLeZzZ I got the idea from a German community member */ #include #define COLOR_YELLOW 0xFFFF00AA #define COLOR_GRAD1 0xB4B5B7AA #pragma tabsize 0 new Skin[MAX_PLAYERS]; new Skinactive[MAX_PLAYERS]; new Skintimer[MAX_PLAYERS]; new InDm[MAX_PLAYERS]; new Text:hilfe1; new Text:hilfe2; new Text:copyright; new Float:dmexit[5][3] = { {2386.0974,989.1138,10.8203}, {2029.5751,1007.7642,10.8203}, {2294.7498,2421.5452,10.8203}, {2017.6318,1545.4016,10.8292}, {2036.8822,1932.5518,12.1310} }; new Float:DMSpawns[8][3] = { {166.4067,1923.9584,18.4408}, {178.3397,1886.7275,20.4317}, {197.1122,1859.0555,20.6406}, {253.9827,1877.2373,20.4743}, {243.8657,1919.5469,17.6406}, {193.4239,1919.4771,17.6406}, {162.0484,1931.0018,33.8984}, {214.4687,1875.1614,13.1470} }; forward DMSelection(playerid); public OnFilterScriptInit( ) { print( "\n************************" ); print( " * Class Selection *" ); print( " * Loaded by G_sTyLeZzZ *" ); print( " *************************\n" ); hilfe1 = TextDrawCreate(134.000000,326.000000,"Use the arrows < > to select another Skin"); TextDrawAlignment(hilfe1,0); TextDrawBackgroundColor(hilfe1,0x000000ff); TextDrawFont(hilfe1,0); TextDrawLetterSize(hilfe1,0.699999,2.200000); TextDrawColor(hilfe1,0xffffffff); TextDrawSetOutline(hilfe1,1); TextDrawSetProportional(hilfe1,1); TextDrawSetShadow(hilfe1,1); hilfe2 = TextDrawCreate(146.000000,351.000000," Press ~r~Tab ~w~to choose the current ~b~Skin"); copyright = TextDrawCreate(388.000000,381.000000,"(C) by G_sTyLeZzZ"); TextDrawAlignment(hilfe2,0); TextDrawAlignment(copyright,0); TextDrawBackgroundColor(hilfe2,0x000000ff); TextDrawBackgroundColor(copyright,0x000000ff); TextDrawFont(hilfe2,0); TextDrawLetterSize(hilfe2,0.699999,2.000000); TextDrawFont(copyright,3); TextDrawLetterSize(copyright,0.299999,1.100000); TextDrawColor(hilfe2,0xffffffff); TextDrawColor(copyright,0xffffffff); TextDrawSetOutline(hilfe2,1); TextDrawSetOutline(copyright,1); TextDrawSetProportional(hilfe2,1); TextDrawSetProportional(copyright,1); TextDrawSetShadow(hilfe2,1); TextDrawSetShadow(copyright,1); return 1; } public OnPlayerConnect(playerid) { Skin[playerid] = 0; Skinactive[playerid] = 0; InDm[playerid] = 0; return 1; } strtok(const string[], &index) { new length = strlen(string); while ((index < length) && (string[index] <= ' ')) { index++; } new offset = index; new result[20]; while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1))) { result[index - offset] = string[index]; index++; } result[index - offset] = EOS; return result; } public OnPlayerDeath(playerid, killerid, reason) { new pname[MAX_PLAYER_NAME]; new string[256]; new deathreason[20]; GameTextForPlayer(playerid,"~r~OWNED",10000,1); GetPlayerName(playerid, pname, sizeof(pname)); GetWeaponName(reason, deathreason, 20); if (killerid == INVALID_PLAYER_ID) { if (reason == WEAPON_DROWN) { format(string, sizeof(string), "*** %s sanked.", pname); } else { if (strlen(deathreason) > 0) { format(string, sizeof(string), "*** %s got owned (%s)", pname, deathreason); } else { format(string, sizeof(string), "*** %s got owned.", pname); } } } else { new killer[MAX_PLAYER_NAME]; GetPlayerName(killerid, killer, sizeof(killer)); if (strlen(deathreason) > 0) { format(string, sizeof(string), "*** %s owned %s. (%s)", killer, pname, deathreason); } else { format(string, sizeof(string), "*** %s owned %s.", killer, pname); } } SendClientMessageToAll(COLOR_GRAD1, string); return 1; } public DMSelection(playerid) { new keys, updown, leftright; GetPlayerKeys(playerid, keys, updown, leftright); if(leftright == KEY_RIGHT) { if(Skin[playerid] == 1) { SetPlayerSkin(playerid,285); Skin[playerid]++; GameTextForPlayer(playerid, "Swat",500,1); } else if (Skin[playerid] == 2) { SetPlayerSkin(playerid,286); Skin[playerid]++; GameTextForPlayer(playerid, "Police",500,1); } else if (Skin[playerid] == 3) { SetPlayerSkin(playerid, 287); Skin[playerid]++; GameTextForPlayer(playerid, "Swat",500,1); } else if(Skin[playerid] == 4) { SetPlayerSkin(playerid, 288); Skin[playerid]++; GameTextForPlayer(playerid, "Police",500,1); } else if(Skin[playerid] == 5) { SetPlayerSkin(playerid, 280); Skin[playerid]++; GameTextForPlayer(playerid, "Swat",500,1); } else if(Skin[playerid] == 6) { SetPlayerSkin(playerid, 281); Skin[playerid]++; GameTextForPlayer(playerid, "Police",500,1); } else if(Skin[playerid] == 7) { SetPlayerSkin(playerid, 282); Skin[playerid]++; GameTextForPlayer(playerid, "Swat",500,1); } else if(Skin[playerid] == 8) { SetPlayerSkin(playerid,283); Skin[playerid]++; GameTextForPlayer(playerid, "Police",500,1); } else if(Skin[playerid] == 9) { SetPlayerSkin(playerid,284); Skin[playerid]++; GameTextForPlayer(playerid, "Swat",500,1); } else if(Skin[playerid] == 10) // letztes skin { SetPlayerSkin(playerid,285); Skin[playerid] = 1; GameTextForPlayer(playerid, "Police",500,1); } } if(leftright == KEY_LEFT) { if(Skin[playerid] == 10) { SetPlayerSkin(playerid, 284); Skin[playerid]--; GameTextForPlayer(playerid, "Swat",500,1); } else if(Skin[playerid] == 9) { SetPlayerSkin(playerid, 283); Skin[playerid]--; GameTextForPlayer(playerid, "Swat",500,1); } else if(Skin[playerid] == 8) { SetPlayerSkin(playerid, 282); Skin[playerid]--; GameTextForPlayer(playerid, "Swat",500,1); } else if(Skin[playerid] == 7) { SetPlayerSkin(playerid, 281); Skin[playerid]--; GameTextForPlayer(playerid, "Police",500,1); } else if(Skin[playerid] == 6) { SetPlayerSkin(playerid, 280); Skin[playerid]--; GameTextForPlayer(playerid, "Swat",500,1); } else if(Skin[playerid] == 5) { SetPlayerSkin(playerid, 288); Skin[playerid]--; GameTextForPlayer(playerid, "Police",500,1); } else if(Skin[playerid] == 4) { SetPlayerSkin(playerid, 287); Skin[playerid]--; GameTextForPlayer(playerid, "Swat",500,1); } else if(Skin[playerid] == 3) { SetPlayerSkin(playerid, 286); Skin[playerid]--; GameTextForPlayer(playerid, "Police",500,1); } else if(Skin[playerid] == 2) { SetPlayerSkin(playerid, 285); Skin[playerid]--; GameTextForPlayer(playerid, "Swat",500,1); } else if(Skin[playerid] == 1) { SetPlayerSkin(playerid, 284); Skin[playerid] = 10; GameTextForPlayer(playerid, "Police",500,1); } } if(keys & KEY_ACTION || keys & KEY_CROUCH) { Skin[playerid] = 0; Skinactive[playerid] = 0; TogglePlayerControllable(playerid, true); new randomize=random(sizeof(DMSpawns)); SetPlayerPos(playerid, DMSpawns[randomize][0],DMSpawns[randomize][1],DMSpawns[randomize][2]); SetCameraBehindPlayer(playerid); KillTimer(Skintimer[playerid]); TextDrawHideForPlayer(playerid, hilfe1); TextDrawHideForPlayer(playerid, hilfe2); TextDrawHideForPlayer(playerid, copyright); SetPlayerWorldBounds(playerid, 315.3026, 105.1009, 1926.849, 1775.037); } return 1; } public OnPlayerDisconnect(playerid) { KillTimer(Skintimer[playerid]); return 1; } public OnPlayerSpawn(playerid) { if(InDm[playerid] == 1) { new randomize=random(sizeof(DMSpawns)); SetPlayerPos(playerid, DMSpawns[randomize][0],DMSpawns[randomize][1],DMSpawns[randomize][2]); SetCameraBehindPlayer(playerid); SendClientMessage(playerid, COLOR_YELLOW,"If you want to exit the Deathmatch use /exit !"); } return 1; } public OnPlayerCommandText(playerid, cmdtext[]) { new idx; new cmd[256]; cmd = strtok(cmdtext, idx); if(strcmp(cmd, "/dm", true) == 0) { if(InDm[playerid] == 1) { SendClientMessage(playerid, COLOR_YELLOW,"You are already in the Deathmatch"); return 1; } else { new pname[256]; GetPlayerName(playerid, pname, sizeof(pname)); format(pname,sizeof(pname),"*** %s (ID: %d) has entered the Deatmatcharea: /dm",pname,playerid); SendClientMessageToAll(COLOR_YELLOW,pname); TogglePlayerControllable(playerid, false); SetPlayerPos(playerid, 232.2091,1935.0380,33.8984); SetPlayerFacingAngle(playerid, 90); SetPlayerCameraPos(playerid,232.2091-1.5,1935.0380,33.8984+0.7); SetPlayerCameraLookAt(playerid,232.2091,1935.0380,33.8984+0.7); SetPlayerSkin(playerid, 284); Skin[playerid] = 1; Skinactive[playerid] = 1; InDm[playerid] = 1; Skintimer[playerid] = SetTimerEx("DMSelection", 200, 1, "i", playerid); TextDrawShowForPlayer(playerid, hilfe1); TextDrawShowForPlayer(playerid, hilfe2); TextDrawShowForPlayer(playerid, copyright); } return 1; } if(strcmp(cmd, "/exit") == 0) { if(InDm[playerid] == 0) { SendClientMessage(playerid, COLOR_YELLOW,"You are not at the Deathmatch Zone!"); return 1; } else { new randomize=random(sizeof(dmexit)); SetPlayerPos(playerid, dmexit[randomize][0],dmexit[randomize][1],dmexit[randomize][2]); //SetPlayerHealth(playerid, 100.0); ResetPlayerWeapons(playerid); InDm[playerid] = 0; SetPlayerWorldBounds(playerid, 3001.214, -2977.858, 2989.536, -2989.536); } return 1; } return 0; }