Ja.. also bei Onplayerdeath lasse ich Tot auf 1 setzen, dann wird er gespawnt und bei OnPlayerSpawn frag ich dann ab ob der Spieler tot ist, dann wird TotZeit auf 5 Min, heißt 60*5 gesetzt. Funktioniert auch.
Beiträge von Stylernero
-
-
Hallo. Ich habe ein kleines Problem. Und zwar, wenn man stirbt startet ein Timmer (1000 = 1 sek), dieser wird halt jede Sekunde erneut aufgerufen und unter SetPlayerUnDeath sollte halt geschaut werden ob der Spieler noch nicht entlassen wurde und ob er noch "TotZeit" hat.. wenn nicht, sollte er wieder entlassen (gespawnt) werden. Aber jedes mal wenn ich sterbe werde ich direkt wieder gespawnt. Es liegt definitiv an SetPlayerUnDeath, weil alles so funktioniert wie ich will, wenn ich SetPlayerUnDeath einfach rausnehme, sprich man wird nach dem Tot im Krankehaus gesetzt, nur die Zeit verstreicht halt nicht, weil dann SetPlayerUndeath fehlt. Kann mir einer sagen was ich mache nmuss damit man nicht mehr gespawnt wird direkt?
stock SetPlayerUnDeath()
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(SpielerInfo[i][Tot] > 0)
{
if(SpielerInfo[i][Tot] == 1)
{
SpielerInfo[i][TotZeit]--;
}
if(SpielerInfo[i][TotZeit] <= 0)
{
SpielerInfo[i][TotZeit] = 0;
SpielerInfo[i][Tot] = 0;
GeradeGestorben[i] = 0;
SetPlayerPos(i,1999.7947,-1453.1426,13.5547);
SetPlayerFacingAngle(i,113.4541);
SetPlayerInterior(i,0);
SetCameraBehindPlayer(i);
TogglePlayerControllable(i,1);
new rand = random(3);
if(rand == 0)
{
GameTextForPlayer(i,"~y~GEHEILT!~n~~g~Du hattest eine leichte Verletzung",5000,3);
SetPlayerHealth(i,90.0);
}
else if(rand == 1)
{
GameTextForPlayer(i,"~y~GEHEILT!~n~~g~Du hattest eine mittlere Verletzung",5000,3);
SetPlayerHealth(i,60.0);
}
else if(rand == 2)
{
GameTextForPlayer(i,"~y~GEHEILT!~n~~g~Du hattest eine schwere Verletzung",5000,3);
SetPlayerHealth(i,20.0);
}
}
}
}
}
return 1;
} -
Nachdem das Fahrzeug eines Spielers zerstört wird, wird überprüft, ob der Spieler eine KFZ Versicherung abgespeichert hat. Wenn nicht, soll das Fahrzeug gelöscht werden. Dieser Teil wird auch im Spieler durchgeführt und das Fahrzeug verschwindet in der Datei und auch die Abfrage ob der Spieler ein Fahrzeug hat wird um eine Anzahl verringert. Trotzdem wird das Fahrzeug immernoch gespawnt. Beim Relog allerdings anschließend nicht mehr. Woran liegt das?
public OnVehicleDeath(vehicleid, killerid)
{
for(new z = 0; z < MAX_PLAYERS;z++)
{
for(new i = 0; i < MAX_PLAYER_CARS;i++)
{
if(vehicleid == meinauto[z][i])
{
if(SpielerInfo[z][KFZVersicherung] == 0)
{
new Car[100];
format(Car,sizeof(Car),"/Fahrzeuge/%s's Auto %d.txt",playername(z),i);
dini_Remove(Car);
SendClientMessage(z,gelb,"Du verfügst über keine KFZ-Versicherung. Dein Fahrzeug wurde zerstört.");
SpielerInfo[z][Fahrzeuge] -= 1;
}
else if(SpielerInfo[z][KFZVersicherung] >= 1)
{
new Car[128];
format(Car,sizeof(Car),"/Fahrzeuge/%s's Auto %d.txt",playername(z),i);
Autos[z][i][Park_x]= dini_Float(Car,"Car_X");
Autos[z][i][Park_y]= dini_Float(Car,"Car_y");
Autos[z][i][Park_z]= dini_Float(Car,"Car_Z");
Autos[z][i][Park_rot]= dini_Float(Car,"Car_ROT");
Autos[z][i][Farbe1] = dini_Int(Car,"Farbe1");
Autos[z][i][Farbe2] = dini_Int(Car,"Farbe2");
Autos[z][i][Paintjob] = dini_Int(Car,"Paintjob");
Autos[z][i][modelid] = dini_Int(Car,"modelid");
Autos[z][i][Spoiler] = dini_Int(Car,"Spoiler");
Autos[z][i][Wheels] = dini_Int(Car,"Wheels");
Autos[z][i][Nitro] = dini_Int(Car,"Nitro");
Autos[z][i][Roof] = dini_Int(Car,"Roof");
Autos[z][i][Hood] = dini_Int(Car,"Hood");
Autos[z][i][Sideskirt] = dini_Int(Car,"Sideskirt");
Autos[z][i][Lamps] = dini_Int(Car,"Lamps");
Autos[z][i][Exhaust] = dini_Int(Car,"Exhaust");
Autos[z][i][Stereo] = dini_Int(Car,"Stereo");
Autos[z][i][Hydraulics] = dini_Int(Car,"Hydraulics");
Autos[z][i][VentRight] = dini_Int(Car,"VentRight");
Autos[z][i][VentLeft] = dini_Int(Car,"VentLeft");
Autos[z][i][FrontBumper] = dini_Int(Car,"FrontBumper");
Autos[z][i][RearBumper] = dini_Int(Car,"RearBumper");
DestroyVehicle(meinauto[z][i]);
meinauto[z][i] = CreateVehicle(Autos[z][i][modelid],Autos[z][i][Park_x],Autos[z][i][Park_y],Autos[z][i][Park_z],Autos[z][i][Park_rot],Autos[z][i][Farbe1],Autos[z][i][Farbe2],-1);
ChangeVehiclePaintjob(meinauto[z][i],Autos[z][i][Paintjob]);
AddVehicleComponent(meinauto[z][i],Autos[z][i][Spoiler]);
AddVehicleComponent(meinauto[z][i],Autos[z][i][Hood]);
AddVehicleComponent(meinauto[z][i],Autos[z][i][Roof]);
AddVehicleComponent(meinauto[z][i],Autos[z][i][Sideskirt]);
AddVehicleComponent(meinauto[z][i],Autos[z][i][Lamps]);
AddVehicleComponent(meinauto[z][i],Autos[z][i][Nitro]);
AddVehicleComponent(meinauto[z][i],Autos[z][i][Exhaust]);
AddVehicleComponent(meinauto[z][i],Autos[z][i][Wheels]);
AddVehicleComponent(meinauto[z][i],Autos[z][i][Stereo]);
AddVehicleComponent(meinauto[z][i],Autos[z][i][Hydraulics]);
AddVehicleComponent(meinauto[z][i],Autos[z][i][FrontBumper]);
AddVehicleComponent(meinauto[z][i],Autos[z][i][RearBumper]);
AddVehicleComponent(meinauto[z][i],Autos[z][i][VentRight]);
AddVehicleComponent(meinauto[z][i],Autos[z][i][VentLeft]);
GetVehicleParamsEx(meinauto[z][i],engine,lights,alarm,doors,bonnet,boot,objective);
SetVehicleParamsEx(meinauto[z][i],engine,lights,alarm,true,bonnet,boot,objective);
carlock[meinauto[z][i]] = true;
SpielerInfo[z][KFZVersicherung] -= 1;
new string[128];
format(string,sizeof string,"Du hast dein Fahrzeug zerstört. Deine Versicherung übernimmt die Kosten der Reparatur. (%d/10)",SpielerInfo[z][KFZVersicherung]);
SendClientMessage(z,gelb,string);
}
}
else continue;
}
}
return 1;
} -
könntest du mir zeigen wie genau?
-
welche klammer?
-
Beide Nachtichten erscheinen immer zweimal. wieso?
if(listitem == 0)
{
for(new i = 0; i < MAX_PLAYER_CARS;i++)
{
new Float:x,Float:y,Float:z;
GetVehiclePos(meinauto[playerid][0],x,y,z);
SetPlayerCheckpoint(playerid,x,y,z,3.0);
return 1;
}
SendClientMessage(playerid,gelb,"* Dein Fahrzeug 1 wurde wiedergefunden. Auf der Map wurde ein Checkpoint gesetzt.");
SendClientMessage(playerid,gelb,"* Er verschwindet wieder wenn du den Server verlässt. Begib dich daher direkt zu ihm.");
GPSCheckpoint[playerid] = 1;
} -
Hallo, ich habe da mal eine Frage. Wie frage ich ab, ob der Spieler die maximale Buchstabenanzahl für die eintragung vom Grund beim /kick z.b erreicht hat?
if(sscanf(params,"us,"pID,grund)) ...Was muss ich zwischen den Punkten setzen, damit es funktioniert?
if(....) return SendClientMessage(playerid,weiß,"Für den Grund darfst du max. 50 Zeichen verwenden."); -
Dankeschön leute, habe seit nem halben Jahr nicht mehr gescriptet und es nicht mitbekommen.
-
dcmd_kick(playerid,params[])
{
if(SpielerInfo[playerid][Adminlevel] >= 3)
{
new spieler[MAX_PLAYER_NAME],spieler2[MAX_PLAYER_NAME],grund[60],string[128],pID;
if(sscanf(params,"us",pID,grund)) return SendClientMessage(playerid,weiß,"Verwendung: /kick [playerid] [Grund]");
if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,weiß,"Dieser Spieler befindet sich nicht auf dem Server.");
//if(SpielerInfo[pID][Adminlevel] >= 4) return SendClientMessage(playerid,weiß,"Du bist nicht befugt diesen Spieler vom Server zu kicken.");
//if(pID == playerid) return SendClientMessage(playerid,weiß,"Du kannst Dich selber nicht vom Server kicken.");
GetPlayerName(playerid,spieler,sizeof spieler);
GetPlayerName(pID,spieler2,sizeof spieler2);
format(string,sizeof string,"AdmCmd: %s wurde von %s gekickt. Grund: %s.",spieler2,spieler,grund);
SendClientMessageToAll(adminfarbe,string);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//ClearChatbox(pID,10);
SendClientMessage(pID,weiß,"");
SendClientMessage(pID,weiß,"");
GetPlayerName(playerid,spieler,sizeof spieler);
GetPlayerName(pID,spieler2,sizeof spieler2);
format(string,sizeof string,"AdmCmd: Du wurdest von %s gekickt. Grund: %s.",spieler,grund);
SendClientMessage(pID,adminfarbe,string);
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Kick(pID);
}
return 1;
}Momentan verzweifel ich ein wenig. Der pID (der ID, die gekickt werden soll) werden keinerlei Nachrichten angezeigt. Gekickt wird sie aber, soweit ich das beurteilen kann, sehe ich dort keinen Fehler. Wieso gibt er dann die string Nachricht nicht aus? LG
-
if(!strlen(inputtext)) return ShowPlayerDialog(playerid,Dialog_Geburtstag,DIALOG_STYLE_INPUT,"Registrierung | Geburtsdatum","Du hast kein Datum angegeben.\n\nBitte trage nun hier Dein Geburtsdatum ein:\n\n(TT/MM/JJJJ) | (T/M/JJ)\n","Weiter","Abbrechen");
new year, month,day,DateInfo[3][20],string[25];
getdate(year, month, day);
split(inputtext, DateInfo, '.');
if(response == 1)
if(strlen(inputtext) > 10)
{
ShowPlayerDialog(playerid,Dialog_Geburtstag,DIALOG_STYLE_INPUT,"Registrierung | Geburtsdatum","Deine Eingabe war nicht akzeptabel.\n\nBitte beachte die unten aufgeliste Möglichkeiten.\n\nBitte trage nun hier Dein Geburtsdatum ein:\n\n(TT/MM/JJJJ) | (T/M/JJ)\n","Weiter","Abbrechen");
return 1;
}
if(!IsValidDate(strval(DateInfo[0]),strval(DateInfo[1]),strval(DateInfo[2])))
{
ShowPlayerDialog(playerid,Dialog_Geburtstag,DIALOG_STYLE_INPUT,"Registrierung | Geburtsdatum","Deine Eingabe war nicht akzeptabel.\n\nBitte beachte die unten aufgeliste Möglichkeiten.\n\nBitte trage nun hier Dein Geburtsdatum ein:\n\n(TT/MM/JJJJ) | (T/M/JJ)\n","Weiter","Abbrechen");
return 1;
}
if(year - strval(DateInfo[2]) > 100 || strval(DateInfo[2]) < 1 || strval(DateInfo[2]) >= year)
{
ShowPlayerDialog(playerid,Dialog_Geburtstag,DIALOG_STYLE_INPUT,"Registrierung | Geburtsdatum","Deine Eingabe war nicht akzeptabel.\n\nBitte beachte die unten aufgeliste Möglichkeiten.\n\nBitte trage nun hier Dein Geburtsdatum ein:\n\n(TT/MM/JJJJ) | (T/M/JJ)\n","Weiter","Abbrechen");
return 1;
}
new check = year - strval(DateInfo[2]);
if(check == year) { return 1; }
if(strval(DateInfo[1]) > month) { check -= 1; }
else if(strval(DateInfo[1]) == month && strval(DateInfo[0]) > day) { check -= 1; }
SpielerInfo[playerid][Alter] = check;
format(string,sizeof(string),"Du bist %i Jahre alt.",SpielerInfo[playerid][Alter]);
SendClientMessage(playerid,weiß,string);Hey leute, ich würde gerne die eingabe Tag.Monat.Jahr noch einmal neben dem eigentlich Alter abgespeichern. Klar, funktioniert bei mir mit SpielerInfo[playerid][Tag] etc, aber ich weiß nicht was ich danach einsetzen muss. year, month und day funktioniert nicht, kann mir einer helfen?
-
Hallo liebe Community,
ich habe eine Frage bezüglich meinem publics für das letztendliche erstellen meinem gekauften Autos in der dini Datei. Man darf maximal zwei Fahrzeuge haben und beim ersten ist bisher noch nie irgendein Fehler aufgetreten, beim zweiten zum Beispiel fehlt nachdem erstellen z.b die Spawnx, spawny,spawnz koordinaten in der datei, farbe etc wiederum schon und jetzt wurde halt alles gespeichert, aber z.B die nachricht nicht angezeigt. Woran liegt das? könnte mal einer drüberschauen?public AutoKaufen(playerid,autoid)
{
for(new i = 0; i < sizeof Buycars; i++)
{
if(GetPlayerVehicleID(playerid) == kaufauto[i])
{
for(new j = 0; j < sizeof Autohaus; j++)
{
if(!strcmp(Autohaus[j][Name],Buycars[i][Autohausname],true))
{
new Autodatei[150],name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Autodatei,sizeof(Autodatei),"/Autos/%s_Auto_%d.ini",name,autoid);
dini_Create(Autodatei);
dini_Set(Autodatei,"Name",Buycars[i][Name]);
dini_IntSet(Autodatei,"modelid",Buycars[i][modelid]);
dini_FloatSet(Autodatei,"HP",1000.00);
dini_FloatSet(Autodatei,"posx",Autohaus[j][spawnx]);
dini_FloatSet(Autodatei,"posy",Autohaus[j][spawny]);
dini_FloatSet(Autodatei,"posz",Autohaus[j][spawnz]);
dini_FloatSet(Autodatei,"posa",Autohaus[j][spawna]);
dini_IntSet(Autodatei,"Farbe1",-1);
dini_IntSet(Autodatei,"Farbe2",-1);
dini_IntSet(Autodatei,"Paintjob",-1);
dini_IntSet(Autodatei,"Preis",Buycars[i][Preis]);
dini_IntSet(Autodatei,"Tankstatus",100);
dini_Set(Autodatei,"Nummernschild",Buycars[i][Name]);
SpielerInfo[playerid][Fahrzeuge] += 1;
Spielercar[playerid][autoid] = CreateVehicle(Buycars[i][modelid],Autohaus[j][spawnx],Autohaus[j][spawny],Autohaus[j][spawnz],Autohaus[j][spawna],133,133,-1);
dini_IntSet(Autodatei,"Spoiler",GetVehicleComponentInSlot(Spielercar[playerid][autoid],0));
SetVehicleNumberPlate(Spielercar[playerid][autoid],dini_Get(Autodatei,"Nummernschild"));
dini_IntSet(Autodatei,"Hood",GetVehicleComponentInSlot(Spielercar[playerid][autoid],1));
dini_IntSet(Autodatei,"Roof",GetVehicleComponentInSlot(Spielercar[playerid][autoid],2));
dini_IntSet(Autodatei,"Sideskirt",GetVehicleComponentInSlot(Spielercar[playerid][autoid],3));
dini_IntSet(Autodatei,"Lamps",GetVehicleComponentInSlot(Spielercar[playerid][autoid],4));
dini_IntSet(Autodatei,"Nitro",GetVehicleComponentInSlot(Spielercar[playerid][autoid],5));
dini_IntSet(Autodatei,"Exhaust",GetVehicleComponentInSlot(Spielercar[playerid][autoid],6));
dini_IntSet(Autodatei,"Wheels",GetVehicleComponentInSlot(Spielercar[playerid][autoid],7));
dini_IntSet(Autodatei,"Stereo",GetVehicleComponentInSlot(Spielercar[playerid][autoid],8));
dini_IntSet(Autodatei,"Hydraulics",GetVehicleComponentInSlot(Spielercar[playerid][autoid],9));
dini_IntSet(Autodatei,"FrontBumper",GetVehicleComponentInSlot(Spielercar[playerid][autoid],10));
dini_IntSet(Autodatei,"RearBumper",GetVehicleComponentInSlot(Spielercar[playerid][autoid],11));
dini_IntSet(Autodatei,"VentRight",GetVehicleComponentInSlot(Spielercar[playerid][autoid],12));
dini_IntSet(Autodatei,"VentLeft",GetVehicleComponentInSlot(Spielercar[playerid][autoid],13));
RemovePlayerFromVehicle(playerid);
TogglePlayerControllable(playerid,1);
TogglePlayerControllable(playerid,1);
SpielerInfo[playerid][Geld] -= Buycars[i][Preis];
GivePlayerMoney(playerid,-Buycars[i][Preis]);
GetVehicleParamsEx(Spielercar[playerid][i],engine,lights,alarm,doors,bonnet,boot,objective);
SetVehicleParamsEx(Spielercar[playerid][i],engine,lights,alarm,false,bonnet,boot,objective);
carlock[Spielercar[playerid][i]] = false;
new string[128];
format(string,sizeof string,"* Du hast Dir einen %s gekauft. (Preis: $%d, Autohaus: %s) *",Buycars[i][Name],Buycars[i][Preis],Autohaus[i][Name]);
SendClientMessage(playerid,gelb,string);
Autohaus[j][Kasse]+=Buycars[i][Preis];
Autos[playerid][autoid][modelid] = dini_Int(Autodatei,"modelid");
Autos[playerid][autoid][HP] = dini_Int(Autodatei,"HP");
Autos[playerid][autoid][Farbe1] = dini_Int(Autodatei,"Farbe1");
Autos[playerid][autoid][Farbe2] = dini_Int(Autodatei,"Farbe2");
Autos[playerid][autoid][Paintjob] = dini_Int(Autodatei,"Paintjob");
Autos[playerid][autoid][Paintjob] = dini_Int(Autodatei,"Preis");
Autos[playerid][autoid][Tankstatus] = dini_Int(Autodatei,"Tankstatus");
Autos[playerid][autoid][Nummernschild] = dini_Int(Autodatei,"Nummernschild");
Autos[playerid][autoid][posx] = dini_Int(Autodatei,"posx");
Autos[playerid][autoid][posy] = dini_Int(Autodatei,"posy");
Autos[playerid][autoid][posz] = dini_Int(Autodatei,"posz");
Autos[playerid][autoid][posa] = dini_Int(Autodatei,"posa");
Autos[playerid][autoid][Spoiler] = dini_Int(Autodatei,"Spoiler");
Autos[playerid][autoid][Wheels] = dini_Int(Autodatei,"Wheels");
Autos[playerid][autoid][Nitro] = dini_Int(Autodatei,"Nitro");
Autos[playerid][autoid][Roof] = dini_Int(Autodatei,"Roof");
Autos[playerid][autoid][Hood] = dini_Int(Autodatei,"Hood");
Autos[playerid][autoid][Sideskirt] = dini_Int(Autodatei,"Sideskirt");
Autos[playerid][autoid][Lamps] = dini_Int(Autodatei,"Lamps");
Autos[playerid][autoid][Exhaust] = dini_Int(Autodatei,"Exhaust");
Autos[playerid][autoid][Stereo] = dini_Int(Autodatei,"Stereo");
Autos[playerid][autoid][Hydraulics] = dini_Int(Autodatei,"Hydraulics");
Autos[playerid][autoid][VentRight] = dini_Int(Autodatei,"VentRight");
Autos[playerid][autoid][VentLeft] = dini_Int(Autodatei,"VentLeft");
Autos[playerid][autoid][FrontBumper] = dini_Int(Autodatei,"FrontBumper");
Autos[playerid][autoid][RearBumper] = dini_Int(Autodatei,"RearBumper");
}
}
}
}
return 1;
} -
mit nem TextDraw
-
Klappt. Danke!
-
Ich meine, s steht in diesem Fall ja für alle Privaten Autos und von denen ist die Farbe ja veränderbar, für die anderen ist sie es ja nicht, weil Fraktion etc alles so bleibt, bzw nicht veränderbar ist.
-
Könntest Du mir den vielleicht mal eben zeigen wie ich die Farbe genau abzuspeichern habe?
-
Habe ich schon. Ich lasse die Farben ja auch dort speichern, dies geschieht dort nämlich unter einem Timer. Habe allerdings nur die wichtigen Zeilen hier beigefügt. Wenn die Funktion mir aber schon nicht die ID's der Farben anzeigen lässt, speichert sie ja auch nicht die richtigen Farben des Fahrzeugs. In meiner Datei steht nämlich auch 0.
-
Ich habe es eingefügt und mir selber eine nachricht geschickt um mir mal selber zu zeigen, dass er die Farben wirklich erkennen kann und er zeigt mir nur 0,0 an, aber das ist ja wohl die Farbe rot nicht. Woran liegt es?
for(new s= 0;s < MAX_PLAYER_CARS;s++)
{
if(vehicleid == Spielercar[i][s])
{
new color[2],string[20];
GetVehicleColor(s,color[0],color[1]);
Autos[i][s][Farbe1] = color[0];
Autos[i][s][Farbe2] = color[1];
format(string,sizeof string,"%d,%d",color[0],color[1]);
SendClientMessage(i,gelb,string);
}
} -
Hallo, ich habe ein Autosystem etc. Wenn ich in die Garage fahre und Tuningteile anbringe speichert alles, außer die Car colors 1 & 2.
Kann mir einer sagen wie ich diese in der dini datei abspeichern kann? -
stock funktioniert, nur wie funktioniert das mit den buchstaben?
-
Gibt es so etwas auch nur für Buchstaben? Wäre cool, weil ich mein System dann vervollständigen kann..