Wysłany: 2013-06-18, 15:44
matiosek70
Wiek: 29 Na forum: 5214 dni Posty: 58
Piwa : 64
Witam, mam problem z komend? /aresztuj, znaczy dodaje do niej ?eby wy?wietla?o w textdrawie ile jeszcze zosta?o czasu do ko?ca odsiadki.
Oto kod:
1.G?ra mapy:
Kod: new jailtime;
new Text:CzasW;
2.Komenda:
Kod: CMD:aresztuj(playerid,cmdtext[])
{
if(GetPlayerTeam(playerid) != POLICJA) return SendClientMessage(playerid, CZERWONY, "Nie jeste? w Policji.");
new gracz,czas;
if(sscanf(cmdtext,"ud",gracz,czas)){
SendClientMessage(playerid, BIALY, "Wpisz: /aresztuj [ID] [Czas(min)].");
return 1;
}
if(!IsPlayerConnected(gracz) || gracz < 0 || gracz >= MAX_GRACZY) return SendClientMessage(playerid, CZERWONY, "Nie ma takiego gracza!");
if(czas < 1 || czas > 60) return SendClientMessage(playerid, CZERWONY, "Czas mo?e by? od 1-60 min.");
wpudle[gracz] = true;
new tmp[256];
format(tmp, sizeof(tmp), "Gracz {FFFFFF}%s {FF0000}trafil(a) do wiezienia przez Policjanta {FFFFFF} %s {FF0000}na {FFFFFF}%d {FF0000}min.", PlayerName(gracz),PlayerName(playerid),czas);
SendClientMessageToAll(CZERWONY, tmp);
SetPlayerInterior(giveplayerid,3);
wpudle[giveplayerid] = true;
SetPlayerPos(giveplayerid,197.7029,174.8801,1003.0234);
ResetPlayerWeapons(gracz);
SetTimerEx("JailUnfreeze",2000,0,"i",gracz);
KillTimer(JailTimer[gracz]);
JailTimer[gracz] = SetTimerEx("UnjailPlayer",czas*60000,0,"i",gracz);
SetTimerEx("SprawdzCzas", 1000, 1, "i",gracz);
czas = jailtime;
TextDrawShowForPlayer(gracz, CzasW);
#pragma unused cmdtext
return 1;
}
3.CallBack
Kod: forward SprawdzCzas();
public SprawdzCzas()
{
new string[256];
format(string, sizeof(string), "Posiedzisz jeszcze: ~y~%d ~w~min", jailtime);
TextDrawSetString(CzasW, string);
return 1;
}
4.TextDraw
Kod: CzasW = TextDrawCreate(300.0, 245.0, "Posiedzisz jeszcze:");
TextDrawBackgroundColor(CzasW, 255);
TextDrawFont(CzasW, 2);
TextDrawLetterSize(CzasW, 0.529999, 3.100000);
TextDrawColor(CzasW, -1);
TextDrawSetOutline(CzasW, 1);
TextDrawAlignment(CzasW, 2);
5. oraz CallBack na wyj?cie z wi?zienia
Kod: forward UnjailPlayer(playerid);
public UnjailPlayer(playerid)
{
wpudle[playerid] = false;
KillTimer(JailTimer[playerid]);
SetPlayerPos(playerid, 2290.0512,2423.8542,10.8203);
SetPlayerInterior(giveplayerid,0);
SendClientMessage(playerid, CZERWONY, "Odby?e?(a?) swoj? kar? i mo?esz ju? gra?.");
TextDrawHideForPlayer(playerid, CzasW);
return 1;
}
Od was chcia?bym ?eby to dzia?a?o. Bo jak ja to zrobi?em to nie czyta zmiennej "czas" komendy Aresztuj. Aha je?li mam takie co?
(czas = jailtime;) to oznacza to ?e jedno drugiemu r?wne?
A mi jak narazie robi sie tak ?e jak daje do wi?zienia to na czacie pisze ten a ten trafi? do wi?zienia na np 2 min. A jak jest w tym wi?zieniu to na textdrawie pisze Posiedzisz jeszcze: 0 min.
Daje oczywi?cie zimne
Wysłany: 2013-06-18, 17:15
IgrexolonO
Wiek: 34 Na forum: 6810 dni Posty: 1386
Piwa : 1062
Avatar masz ?adny, ale kod a? Ci ca?y przepisa?em (...)
Kod: new bool:inJail[MAX_PLAYERS char];
new inJailTimeh[MAX_PLAYERS];
new Text:txt_jailTimeh[MAX_PLAYERS] = {Text:INVALID_TEXT_DRAW, ...};
forward @jailChecka();
OnGameModeInit:
Kod: for(new i=0;i<MAX_PLAYERS;i++)
{
txt_jailTimeh[i] = TextDrawCreate(300.0, 245.0, "Posiedzisz jeszcze:");
TextDrawBackgroundColor(txt_jailTimeh[i], 255);
TextDrawFont(txt_jailTimeh[i], 2);
TextDrawLetterSize(txt_jailTimeh[i], 0.529999, 3.100000);
TextDrawColor(txt_jailTimeh[i], -1);
TextDrawSetOutline(txt_jailTimeh[i], 1);
TextDrawAlignment(txt_jailTimeh[i], 2);
}
SetTimer("@jailChecka", 10000, true);
Kod: CMD:aresztuj(playerid, p[])
{
if(isnull(p)) return SendClientMessage(playerid, -1, "U?ycie: /aresztuj [id gracza] [czas (min)]"), 1;
new player, time;
sscanf(p, "id", player, time);
if(player == INVALID_PLAYER_ID) return SendClientMessage(playerid, -1, "Poda?e? ID z?ego gracza!"), 1;
if(time < 1 && time > 60) return SendClientMessage(playerid, -1, "Czas nie mo?e by? mniejszy ni? 1 minuta oraz wi?kszy ni? 59 minut."), 1;
new message[150];
format(message, sizeof(message), "Gracz %s {FF0000}trafil(a) do wiezienia przez Policjanta {FFFFFF}%s {FF0000}na {FFFFFF}%d{FF0000}min.", PlayerName(player), PlayerName(playerid), time);
SendClientMessageToAll(-1, message);
inJail{player} = true;
inJailTimeh[player] = (gettime() + (time * 60));
SetPlayerInterior(player, 3);
SetPlayerPos(player, 197.7029, 174.8801, 1003.0234);
ResetPlayerWeapons(player);
return 1;
}
Kod: #define abs(%1) \
(((%1) < 0) ? (-(%1)) : ((%1)))
Kod: @jailChecka()
{
for(new i;i<MAX_PLAYERS;i++)
{
if(inJail{i} == true)
{
if(gettime() < inJailTimeh[i])
{
new lefta = ((gettime() - inJailTimeh[i]) / 60);
new stringe[128];
format(stringe, sizeof(stringe), "Posiedzisz jeszcze: ~y~%d ~w~min", abs(lefta));
TextDrawSetString(txt_jailTimeh[i], stringe);
TextDrawShowForPlayer(i, txt_jailTimeh[i]);
}
else if(gettime() > inJailTimeh[i])
{
inJail{i} = false;
inJailTimeh[0] = 0;
SetPlayerPos(i, 2290.0512,2423.8542,10.8203);
SetPlayerInterior(i,0);
SendClientMessage(i, -1, "Odby?e?(a?) swoj? kar? i mo?esz ju? gra?.");
TextDrawHideForPlayer(i, txt_jailTimeh[i]);
}
}
}
return 1;
}
Wysłany: 2013-06-18, 17:44
matiosek70
Wiek: 29 Na forum: 5214 dni Posty: 58
Piwa : 64
Thx masz bardzo zimne xD
Tagi: komenda :: aresztuj
Anonymous
Na forum: 245 dni
Posty: 1
Anonymous Koniecznie zajrzyj na: