Heyho
Ich hab da'n kleines Problem, und da ich mich nie weiter mit solchen Sachen beschäftigt habe, such ich hier mal um Rat
Also folgendes: Ich hab einen Befehl gescriptet, mit dem Cops, Spieler die getied sind "(/tie)" entfesseln können.
Da ich es etwas unfair fände, dass die nur /befreien eingeben müssten - dachte ich mir, sie sollen 30 Sekunden brauchen.
Das klappt auch alles, allerdings scheitere ich bei der Abfrage, ob der Cop noch in der Nähe des Gefesselten ist (im Timer - da ich nicht weiß, wie ich die ID's der Spieler mit in den Timer nehmen soll xD)
Ich benutze LoH
Hier mal alles, was bisher mit Befreien zu tun hat :).
Der Befehl (der soweit einwandfrei geht):
if(strcmp(cmd, "/befreien", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if(IsACop(playerid))
{
tmp = strtok(cmdtext,idx);
if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_WHITE,"Benutze: /befreien [Spieler]"); return 1; }
giveplayerid = ReturnUser(tmp);
if(IsPlayerConnected(giveplayerid))
{
if(giveplayerid != INVALID_PLAYER_ID)
{
if (ProxDetectorS(8.0, playerid, giveplayerid))
{
if(giveplayerid == playerid) { SendClientMessage(playerid, COLOR_GREY, "Du kannst dich nicht selbst befreien!"); return 1; }
if(PlayerTied[giveplayerid])
{
new string33[128];
format(string33, sizeof(string33),"Du entfesselst nun %s. Du musst 30 Sekunden warten!",giveplayer);
SendClientMessage(playerid, COLOR_LIGHTBLUE,string33);
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
SetTimerEx("Befreien2",30000,0,"i",playerid);
}
else
{
SendClientMessage(playerid,COLOR_GREY,"Der Spieler ist nicht gefesselt!");
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_GREY,"Der Spieler ist nicht in deiner Nähe!");
return 1;
}
}
}
else
{
SendClientMessage(playerid, COLOR_GREY,"Der Spieler ist nicht online!");
}
}
else
{
SendClientMessage(playerid, COLOR_GREY,"Du bist kein COP / FBI AGENT / ARMY MITGLIED!");
return 1;
}
}
return 1;
}
Dann einmal die public's Befreien(playerid,giveplayerid) & public Befreien2(playerid,giveplayerid):
public Befreien2(playerid, giveplayerid)
{
if(ProxDetectorS(8.0, playerid, giveplayerid))
{
SetTimerEx("Befreien",1,0,"i",giveplayerid);
}
else
{
SendClientMessage(playerid,COLOR_GREY,"Du bist zu früh gegangen!");
return 1;
}
return 1;
}
public Befreien(playerid, giveplayerid)
{
new string[128];
SetPlayerInterior(giveplayerid, 0);
format(string, sizeof(string), "* Du wurdest befreit.");
SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, string);
GameTextForPlayer(giveplayerid, "~g~Frei", 2500, 3);
UnFreezePlayer(giveplayerid);
PlayerTied[giveplayerid] = 0;
PhoneOnline[giveplayerid] = 0;
PlayerCantWrite[giveplayerid] = 0;
return 1;
}
und natürlich (auch wenns eher unwichtig ist) die forwards^^:
forward Befreien(playerid, giveplayerid);
forward Befreien2(playerid, giveplayerid);
Ich hoffe, mir kann einer helfen =P