/jail [ID] [Laiks] [Iemesls]

Ja kas neizprotams.

Moderator: Moderatori

Post Reply
User avatar
Crone
Censoņa
Censoņa
Posts: 247
Joined: 30 Oct 2010, 21:48
Location: Valka

/jail [ID] [Laiks] [Iemesls]

Post by Crone »

Tātad es uztaisīju /jail [id] [laiks] [iemesls] komandu, ieliku to atsevišķā skriptā, sakompilēju, erroru nav, bet kad ieeju serverī un ierakstu piem. /jail 5 100 Bug, tad ieliek to spēlētāju cietumā un parādas augšā "Administrators ielika "niks" cietumā uz 49 sekundēm. Iemesls : " un arī neparādas spēlētājam cik ilgi atlicis cietumā sēdēt, un viņu nekad neizlaiž ārā. Varat lūdzu palīdzēt?

Skripts :

Code: Select all

#include 
	#include 
	new JTime[MAX_PLAYERS];
	new JTTimer[MAX_PLAYERS];
	new Jailed[MAX_PLAYERS];
	new Text:JailTextDraw[MAX_PLAYERS];
	// Colours
	#define COLOR_DARKGREEN 0x33AA33AA
	#define COLOR_GREEN 0x00FF00FF
	#define COLOR_PINK 0xFF66FFAA
	#define COLOR_WHITE 0xFFFFFFFF
	#define COLOR_YELLOW 0xFFFF00FF
	#define COLOR_BLUE 0x0000FFFF
	#define COLOR_RED 0xFF0000C7
	#define COLOR_ORANGE 0xFF8C00FF
	#define COLOR_PURPLE 0x880097FF
	#define COLOR_BLACK 0x00000000
	#define COLOR_LBLUE 0xA3FFFFFF
	#define COLOR_GREY 0x939493FF
	#define COLOR_BROWN 0x824B00FF
	#define COLOR_BRIGHTRED 0xBCFF00FF
	#define COLOR_DARKBLUE 0x0000BAFF
	
	public OnPlayerCommandText(playerid, cmdtext[])
	{
    if(Jailed[playerid] == 1)
	{
	return 1;
	}
    dcmd(jail, 4, cmdtext);
	return 0;
	}

	dcmd_jail(playerid,params[])
	{
	new Reason[256], pID;
 	if(sscanf(params,"uds",pID,JTime[pID],Reason)){
	return SendClientMessage(playerid,COLOR_YELLOW,"PIELIETOJUMS: /jail [ID] [Laiks] [Iemesls]");
	}
	if(!IsPlayerConnected(pID)) {
 	return SendClientMessage(playerid,COLOR_RED,"Nepareizs spēlētāja ID!");
 	}
	if(Jailed[pID] == 1) {
 	return SendClientMessage(playerid,COLOR_RED,"Spēlētājs jau atrodas cietumā!");
 	}
	new name[MAX_PLAYER_NAME],string[256];
	GetPlayerName(pID,name,sizeof(name));
	format(string,sizeof(string),"Admins ielika %s cietumā uz %d sekundēm. Iemesls: %s",name,JTime,Reason);
	SendClientMessageToAll(COLOR_WHITE,string);
	Jailed[pID] = 1;
	JailTime(pID);
	SetPlayerPos(pID,-11.5327,2328.8679,24.1406);
 	TextDrawShowForPlayer(pID, JailTextDraw[pID]);
  	return 1;
	}

	forward JailTime(playerid);
	public JailTime(playerid)
	{
	if (JTime[playerid] == 0)
	{
	Jailed[playerid] = 0;
	JTime[playerid] = 0;
	SpawnPlayer(playerid);
	KillTimer(JTTimer[playerid]);
	TextDrawHideForPlayer(playerid, JailTextDraw[playerid]);
	return 1;
	}
	JailTextDraw[playerid] = TextDrawCreate(240.0,580.0,JTime[playerid]);
	JTTimer[playerid] = SetTimer("JailTime", 1000, 0);
	new string[50];
	TextDrawShowForPlayer(playerid, JailTextDraw[playerid]);
	format(string, sizeof string, "~r~%i", JTime[playerid]-1);
	TextDrawSetString(JailTextDraw[playerid], string);
	JTime[playerid]--;
	return 1;
	}
Paldies jau iepriekš! :)
.
Image
User avatar
Macluawn
Jauniņais
Jauniņais
Posts: 124
Joined: 07 Feb 2009, 23:16

Re: /jail [ID] [Laiks] [Iemesls]

Post by Macluawn »

Iesaku izmantot zcmd,
jo tas ir ātrāks par dcmd.
Ja tev tiek izmantotas 100+ komandas,
tad vel labāk būtu izmantot ycmd.


'jail' komandā tu neuzstādi 'JTime' mainīgā vērtību spēlētājam, tādēļ tas vienmēr ir 0. Taimerī ir uzlikts, ja mainīgais 'JTime' ir vienāds ar 0, tad viņš tiek izlaists no cietuma, noņem tekstdrāvu un taimeri neturpina uz spēlētāju.
+ Uz vairākiem spēlētājiem šis varētu neiet, jo tu visiem spēlētājiem uzstādi vienādu taimeri. Bieži viņus neizmantoju tapēc nezinu vainu viņš neies, vai ēdīs vairāk resursus nekā nepieciešams.
User avatar
Crone
Censoņa
Censoņa
Posts: 247
Joined: 30 Oct 2010, 21:48
Location: Valka

Re: /jail [ID] [Laiks] [Iemesls]

Post by Crone »

Dabūju, ko gribēju! LOCK
.
Image
Post Reply