hey, ich arbeite gerade an einem befehl um einen spieler wiederzubeleben.
ich weiß aber nicht, wie man es hinbekommt, dass der spieler, der an position xyz gestorben ist wiederbelebt wird, sodass man nicht den namen des spielers eingeben muss...
wiederbelebungs befehl
- [MM]Marco
- Geschlossen
- Erledigt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
?!? Du willst also die Koordinaten angeben an dem der Spieler gestorben ist?
-
ja so in etwa^^
oder ist ich habe eine bessere idee,
kann man nicht einen befehl machen, zB /leiche und dann wird einem angezeigt : Spieler blabla ist hier gestorben!kann mir keiner helfen?
-
musste viel mit abfragen arbeiten
ich würd zb so arbeiten
public SetPlayerSpawn(playerid)
if(IstGeheilt != 0)
{
SetSpawnInfo(blabla);
}
else
was passieren soll wenn der spieler normal gestorben ist (dieses musst du unter dem callbach onPlayerDeath wiederrufen.) -
ja, das bekomme ich alles hin, aber wie kann ich den Namen des Toten wiedergeben?
also wenn man an der stelle totx,toy,totz ist, soll man einen gametext bekommen, wo dann steht dies ist die leiche von blablabla -
Oben im Script:
new GebrauchName[MAX_PLAYERS][MAX_PLAYER_NAME],
Float:TotX[MAX_PLAYERS],
Float:TotY[MAX_PLAYERS],
Float:TotZ[MAX_PLAYERS],
PlayerTot[MAX_PLAYERS],
Text3D:PlayerTot[MAX_PLAYERS];Bei OnPlayerConnect:
GetPlayerName(playerid,GebrauchName[playerid],MAX_PLAYER_NAME);Dann bei OnPlayerDeath (Also wo deine X,Y,Z sind von der TotX, etc. ^^)
new Float:X,Float:Y,Float:Z;
GetPlayerPos(playerid,X,Y,Z);TotX[playerid] = X;
TotY[playerid] = Y;
TotZ[playerid] = Z;
PlayerTot[playerid] = 1;new string[128];
format(string,128,"Dies ist die Leiche von %s.",GebrauchName[playerid]);PlayerTot[playerid] = Create3DTextLabel(string, FARBE, X, Y, Z, 25);
Bei deinem Befehl:
if(strcmp(cmdtext,"/wiederbeleben",true)==0)
{
if(IsAMedic(playerid))
{
for(new i=0;i<MAX_PLAYERS;i++)
{
if(IsPlayerConnected(i))
{
if(PlayerTot[i] == 1)
{
if(IsPlayerInRangeOfPoint(playerid,2,TotX[i],TotY[i],TotZ[i]))
{
PlayerTot[i] = 0;
//Raus aus Krankenhaus zeugs :D
}
}
}
}
}
}So..
1. Brain.exe anschalten
2. Verstand.dll und Logik.dll mit Injector.exe injecten
3. Bissl umschreiben, damit es in dein Script passt -
Schön Gamacht @DeadMaus!
Mach doch ein TuT
Tut mir leid, dass du an mir erkrankt bist -
Vielleicht morgen
Bin jetzt so müde... Schon fast am ...Naja... Also du bist nicht richtig Schuld an den Bluescreens Eher mein PC
Außerdem ist der Text in meiner Signatur Uralt.... 4-5 Monate her xD
-
Ähm, Deadmau5, muss das 3DTextlabel nicht auch mit einem Timer gelöscht werden^^, sonst hat man ja ganz SA damit voll xD.
-
das ist perfekt danke^^
kann man auch statt nen 3d text ein gametext benutzen?
-
-
nein, gametext ist nicht geiegnet.
Wem willste den Gametext denn schicken^^.
Mit Label ist schon gut, hab es so gemacht, nach 2.30 minuten wird das Label gelöscht.
Ist genug, das das Krnakenhaus nur eine Minute dauert! -
ich möchte aber wenn jemand das pickup "totenkopf" betritt, das dann ein gametext und nicht ein 3d textlabel
-
habe ein fehler
number of arguments does not match definition
new Float:X,Float:Y,Float:Z;
GetPlayerPos(playerid,X,Y,Z);TotX[playerid] = X;
TotY[playerid] = Y;
TotZ[playerid] = Z;
PlayerTot[playerid] = 1;new string[128];
format(string,128,"Dies ist die Leiche von %s.",GebrauchName[playerid]);Todlabel[playerid] = Create3DTextLabel(string, COLOR_RED, X, Y, Z);
-
habe ein fehler
number of arguments does not match definition
new Float:X,Float:Y,Float:Z;
GetPlayerPos(playerid,X,Y,Z);TotX[playerid] = X;
TotY[playerid] = Y;
TotZ[playerid] = Z;
PlayerTot[playerid] = 1;new string[128];
format(string,128,"Dies ist die Leiche von %s.",GebrauchName[playerid]);Todlabel[playerid] = Create3DTextLabel(string, COLOR_RED, X, Y, Z);
Lesen bildet
Dir fehlt der Radius.
So sollte es aussehen:
Todlabel[playerid] = Create3DTextLabel(string, FARBE, X, Y, Z, 25);[MM]Marco:
Versuchs mal so:
if(strcmp(cmdtext,"/wiederbeleben",true)==0)
{
if(IsAMedic(playerid))
{
for(new i=0;i<MAX_PLAYERS;i++)
{
if(IsPlayerConnected(i))
{
if(PlayerTot[i] == 1)
{
if(IsPlayerInRangeOfPoint(playerid,2,TotX[i],TotY[i],TotZ[i]))
{
PlayerTot[i] = 0;
Delete3DTextLabel(Todlabel[playerid]);
//Raus aus Krankenhaus zeugs :D
}
}
}
}
}
}
Und wenn du es unbedingt mit Gamtext machen willst, nimm das hierOben im Script:
new GebrauchName[MAX_PLAYERS][MAX_PLAYER_NAME],
Float:TotX[MAX_PLAYERS],
Float:TotY[MAX_PLAYERS],
Float:TotZ[MAX_PLAYERS],
PlayerTot[MAX_PLAYERS],
TodText[MAX_PLAYERS][64];Bei OnPlayerConnect:
GetPlayerName(playerid,GebrauchName[playerid],MAX_PLAYER_NAME);Bei OnPlayerDeath:
new Float:X,Float:Y,Float:Z;
GetPlayerPos(playerid,X,Y,Z);TotX[playerid] = X;
TotY[playerid] = Y;
TotZ[playerid] = Z;
PlayerTot[playerid] = 1;new string[128];
format(TodText[playerid],128,"Dies ist die Leiche von %s.",GebrauchName[playerid]);Jetzt ist die Frage, hast du irgendwelche Timer?
Wenn es ein Godfather Script ist, dann sollte ein Timer namens OtherTimer existieren.
Da gehst du jetzt mal hin.
Dort fügst du dazu:
for(new i=0;i<MAX_PLAYERS;i++)
{
if(IsPlayerConnected(i))
{
new Float:X,Float:Y,Float:Z;
GetPlayerPos(i,X,Y,Z);
if(PlayerTot[i] == 1)
{
if(IsPlayerInRangeOfPoint(i,2,TodX[i],TodY[i],TodZ[i]))
{
GameTextForPlayer(i, TodText[i], 5000, 4);
}
}
}
}Und das:
if(strcmp(cmdtext,"/wiederbeleben",true)==0)
{
if(IsAMedic(playerid))
{
for(new i=0;i<MAX_PLAYERS;i++)
{
if(IsPlayerConnected(i))
{
if(PlayerTot[i] == 1)
{
if(IsPlayerInRangeOfPoint(playerid,2,TotX[i],TotY[i],TotZ[i]))
{
PlayerTot[i] = 0;
//Raus aus Krankenhaus zeugs :D
}
}
}
}
}
}
Kannste so lassenHoffe das passt so für dich ;D
-
danke deadmaus^^
ich benutze ein selfmade und habe als timer deadtime xDnur eine frage, soll der timer bei onplayerdeath der bei ongamemodeinit sein?
-
OnGameModeInit natürlich
SetTimer("deadtime",1000,1);
-
breadfish.de
Hat das Thema geschlossen.