[FilterScript] [ADDON]/[FS] - Adding Character Kills
#1

Someone REQUESTED This to me I've been asked many times, "How do you make a Character Kill for my Roleplay Server" etc... Well I'm tired of it so i made a add-on for people's Roleplay server. This was pulled straight out from my Roleplay server.

Notice - Fuck my indentation!

Before we begin You need to add this code, this code separates....[Hard to Explain fuck it]
Код:
forward split(const strsrc[], strdest[][], delimiter);
public split(const strsrc[], strdest[][], delimiter)
{
	new i, li;
	new aNum;
	new len;
	while(i <= strlen(strsrc)){
	  if(strsrc[i]==delimiter || i==strlen(strsrc)){
	    len = strmid(strdest[aNum], strsrc, li, i, 128);
	    strdest[aNum][len] = 0;
	    li = i+1;
	    aNum++;
		}
		i++;
	}
	return 1;
}
Step 1: We are going to use enumeration for this, So Put this under your includes.

Код:
enum CKInfo
{
  Player[MAX_PLAYER_NAME],
  Killer[MAX_PLAYER_NAME],
  Month,
  Day,
  Year
}
new CharacterKillInfo[10][CKInfo];
This will make up to 10 CK allowed you can edit the [10] to make more CKs allowed!

Step 2: We Have to load and save the cks to work right?

Код:
forward LoadCK();
public LoadCK()
{
	new arrCoords[33][64];
	new strFromFile2[256];
	new File: file = fopen("CK.txt", io_read);
	if (file)
	{
		new idx;
		while (idx < sizeof(CharacterKillInfo))
		{
			fread(file, strFromFile2);
			split(strFromFile2, arrCoords, '|');
      strmid(CharacterKillInfo[idx][Player], arrCoords[0], 0, strlen(arrCoords[0]), 255);
      strmid(CharacterKillInfo[idx][Killer], arrCoords[1], 0, strlen(arrCoords[1]), 255);
      CharacterKillInfo[idx][Month] = strval(arrCoords[2]);
      CharacterKillInfo[idx][Day] = strval(arrCoords[3]);
      CharacterKillInfo[idx][Year] = strval(arrCoords[4]);
      print("---------------------------------");
			printf("CKid %d - PlayerKilled: %s - Killer %s",idx,CharacterKillInfo[idx][Player],CharacterKillInfo[idx][Killer]);
			print("---------------------------------");
			idx++;
		}
	}
	fclose(file);
	return 1;
}
The Code up There Loads it and the one below saves it!

Код:
forward SaveCK();
public SaveCK()
{
 	new idx;
	new File: file2;
	while (idx < sizeof(CharacterKillInfo))
	{
		new coordsstring[512];
		format(coordsstring, sizeof(coordsstring), "%s|%s|%d|%d|%d\n",
		CharacterKillInfo[idx][Player],
    CharacterKillInfo[idx][Killer],
    CharacterKillInfo[idx][Month],
    CharacterKillInfo[idx][Day],
    CharacterKillInfo[idx][Year]);
		if(idx == 0)
		{
			file2 = fopen("CK.txt", io_write);
		}
		else
		{
			file2 = fopen("CK.txt", io_append);
		}
		fwrite(file2, coordsstring);
		idx++;
		fclose(file2);
	}
	return 1;
}
Step 3: Now You will have to make sure that when a player connects with a name his name is CKed or not. Now this code does so, add this to your OnPlayerConnect:
Код:
new time;
	new string[128];
	new playername[MAX_PLAYER_NAME];
    GetPlayerName(playerid, playername, sizeof(playername));
  	if(strcmp(playername, CharacterKillInfo[playerid][Player], true) == 0)
	{
		SendClientMessage(playerid, 0xAA3333AA, "[Attention] = You're listed in the CK GTFO");
		format(string, sizeof(string), "Date Died - %d %d %d [Month,Day,Year]", CharacterKillInfo[time][Month],CharacterKillInfo[time][Day],CharacterKillInfo[time][Year]);
		SendClientMessage(playerid, 0xAA3333AA, string);
		Kick(playerid);
		return 1;
	}
Step 4 Now we need to make a admin command that makes you CK someone! Put this under OnPlayerCommandText
Код:
new tmp[128];
	new idx;
	new giveplayerid;
	if (strcmp("/ack", cmdtext, true, 10) == 0)
	{
		for(new i = 0; i < MAX_PLAYERS; i++)
		{
		  if(IsPlayerAdmin(playerid))
		  {
				tmp = strtok(cmdtext, idx);
				if(strlen(tmp) == 0) return SendClientMessage(playerid, 0xAA3333AA, "USAGE: /ack [playerid]");
				giveplayerid = strval(tmp);
				new plname[MAX_PLAYER_NAME];
				GetPlayerName(playerid, plname, sizeof(plname));
				CharacterKillInfo[giveplayerid][Player] = plname;
				new dYear, dMonth, dDay;
				getdate(dYear, dMonth, dDay);
				CharacterKillInfo[giveplayerid][Month] = dMonth;
				CharacterKillInfo[giveplayerid][Day] = dDay;
				CharacterKillInfo[giveplayerid][Year] = dYear;
				SendClientMessage(giveplayerid, 0xAA3333AA, "You have been character killed!");
				Kick(giveplayerid);
			}
		}
		return 1;
	}
All done making a CK system the ck.txt file is in the attachments!

Notice: If you are too lazy, or your getting warnings or errors. Than you may download this whole ck system in the attachments also!

Reply
#2

Comments?
Reply
#3

Weird, I didnt know a CK is like a ban. On the RP servers Iґve played on its just a new "beginning", a new character.
Reply
#4

Quote:
Originally Posted by Mo3
Weird, I didnt know a CK is like a ban. On the RP servers Iґve played on its just a new "beginning", a new character.
I suppose you COULD make it just reset the variables, but basically, all in all think of it as a character ban.
Reply
#5

good work this cmd are utility xd
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)