Bei OnPlayerEnterVehicle:
mSchaden[playerid] = 0;
Beiträge von Jeffry
-
-
Ja. Und den define kannst du weg machen, der gibt so keinen Sinn.
-
Du hast die Größenabfrage falsch herum gemacht und ich habe es immer schön mitkopiert.
if(health > 400 && mSchaden[playerid] == 0)
zu:
if(health < 400 && mSchaden[playerid] == 0) -
Nein, du nutzt hier nur "Name":
format(Spieler,sizeof(Spieler),"/Accounts/%s.txt",Name(pID));
Ebenso bei SpielerSpeichern.Entweder du änderst das zu NamePlayer, oder du schaust dir mal die "Name" Funktion an, bzw änderst diese zu dem gleichen wie NamePlayer.
-
Ok, da haben wir doch das Problem.
Poste bitte mal deine "Name" Funktion. Die gibt nämlich nichts zurück, deshalb klappt auch dein SpielerSpeichern nicht. -
Debugge es bitte mal und poste dann was im Log steht wenn du in das Fahrzeug einsteigst:
printf("IsARomero: %d / playerid: %d / model: %d", IsARomero(GetPlayerVehicleID(playerid)), playerid, GetVehicleModel(GetPlayerVehicleID(playerid)));
if(IsARomero(GetPlayerVehicleID(playerid)))
{
printf("Job: %d / NPC: %d", PlayerInfo[playerid][pJob], IsPlayerNPC(playerid));
if(PlayerInfo[playerid][pJob] != 33 || IsPlayerNPC(playerid))
{
printf("Entfernt.");
SendClientMessage(playerid,COLOR_GREY," Du bist kein Bestatter !");
RemovePlayerFromVehicle(playerid);
return 1;
}
} -
Kopiere den Code von oben nochmal, ich hatte da einen Parameter vergessen und poste den Log nochmal.
Nebenbei kannst du mir noch beantworten, ob du im Compiler eine mehrzeilige Meldung mit vielen Zahlen hast? -
Willkommen auf Breadfish!
tmptime = (gettime()+3600)+(60*zeit);
zu:
tmptime = gettime()+(60*zeit);Und
new restzeit = (GetPVarInt(playerid,"Timeban") - time - 3600)/60;
zu:
new restzeit = (GetPVarInt(playerid,"Timeban") - time)/60;Dann dürfte es klappen.
-
Poste bitte den Code, sonst kann ich es nicht testen. Ich kann den Code ja schlecht erraten.
-
Das dürfte so schon klappen. Wie erstellst du das Objekt denn zu Anfang, dann teste ich es kurz bei mir.
-
Wie ist es denn bei dir aufgebaut? Sind alle Jobs Bestatter, außer der 33? Wenn nicht, ändere es zu:
if(IsARomero(GetPlayerVehicleID(playerid)))
{
if(PlayerInfo[playerid][pJob] != 33 || IsPlayerNPC(playerid))
{
SendClientMessage(playerid,COLOR_GREY," Du bist kein Bestatter !");
RemovePlayerFromVehicle(playerid);
return 1;
}
}Oder hast du eventuell noch andere Job IDs für Bestatter?
-
Was wird so geprintet?
ocmd:ban(playerid,params[])
{
if(!isPlayerAnAdmin(playerid,3))return SendClientMessage(playerid,ROT,"Du hast kein Admin Level 3.");
new pID, reason[128],string[144],name[MAX_PLAYER_NAME],pIDname[MAX_PLAYER_NAME];
if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,GELB,"Tippe: /ban [id] [grund]");
GetPlayerName(playerid,name,sizeof(name));
format(string,sizeof(string),"Du wurdest von %s gebannt. Grund: %s",name,reason);
SendClientMessage(pID,ROT, string);
GetPlayerName(pID,pIDname,sizeof(pIDname));
format(string,sizeof(string),"Du hast den Spieler %s erfolgreich gesperrt.",pIDname);
SendClientMessage(playerid,-1,string);
SetPVarInt(pID,"Gesperrt",1);
new Spieler[128];
printf("Account suche");
format(Spieler,sizeof(Spieler),"/Accounts/%s.txt",Name(pID));
printf("Spieler: %s -> %d", Spieler, fexist(Spieler));
printf("reason: %s", reason);
dini_Set(Spieler,"bangrund",reason);
dini_Set(Spieler,"banadmin",Name(playerid));
printf("Dini Bearbeitung");
SetTimerEx("Gebannt",200,false,"d",pID);
Log("BanLog",string);
return 1;
}Werden eigentlich die anderen stats gespeichert?
-
Wie sieht es aus, wenn du es so debuggst?
new FuelDropVar = GetPVarInt(playerid,"FuelDrop");
printf("Aufruf: %d playerid: %d FuelDropVar: %d (soll: %d)",gettime(),playerid,FuelDropVar,FuelDropRate[vehicleid]);
SetPVarInt(playerid,"FuelDrop",FuelDropVar+1);
if(FuelDropRate[vehicleid] == FuelDropVar)
{
printf("Tank runter");
SetPVarInt(playerid,"FuelDrop",0);
centerTank[vehicleid] -= FuelDropValue[vehicleid];
if(centerTank[vehicleid] < 0) centerTank[vehicleid] = 0;
if(wingTankLimit[vehicleid] != 0)
{
leftTank[vehicleid] -= FuelDropValue[vehicleid];
if(leftTank[vehicleid] < 0) leftTank[vehicleid] = 0;
rightTank[vehicleid] -= FuelDropValue[vehicleid];
if(rightTank[vehicleid] < 0) rightTank[vehicleid] = 0;
}
} -
Unter die Includes:
new mSchaden[MAX_PLAYERS];forward VehicleHealth();
public VehicleHealth()
{
for(new playerid = 0; playerid < MAX_PLAYERS; playerid++)
{
if(IsPlayerConnected(playerid))
{
if(IsPlayerInAnyVehicle(playerid))
{
new Float:health;
new veh = GetPlayerVehicleID(playerid);
GetVehicleHealth(veh, health);
if(health > 400 && mSchaden[playerid] == 0)
{
mSchaden[playerid] = 1;
SendClientMessage(playerid,0xFF0000FF,"Du hast einen Motorschaden!");
}
}
}
}
return 1;
}Und beim Befehl:
if(mSchaden[playerid] == 1) return SendClientMessage(playerid, 0xFF0000FF, "Error: Motoschaden!"); -
Steht der Ban im BanLog?
Hast du dein SpielerSpeichern geändert?Wird es denn gespeichert, wenn du den Spieler nicht kickst, sprich den Timer der gestartet wird mal auskommentierst und gleich nach dem Befehl in die Datei schaust?
-
forward IsARomero(carid);
public IsARomero(carid)
{
new modelid = GetVehicleModel(carid);
if(modelid == 442)
{
return 1;
}
return 0;
}
if(IsARomero(GetPlayerVehicleID(playerid)))
{
if(PlayerInfo[playerid][pJob] == 33 || IsPlayerNPC(playerid))
{
SendClientMessage(playerid,COLOR_GREY," Du bist kein Bestatter !");
RemovePlayerFromVehicle(playerid);
return 1;
}
} -
Also bei mir geht es. Versuch mal den direkten Link:
https://s18.solidfilesusercont…NN/5c0a/nativechecker.dll -
Unter welchem Callback steht der Code?
Wie hast du newcar deklariert und welchen Wert weißt du ihm zu? -
Ja, genau wie ich gesagt hatte.
SetTimer("Gebannt",1450,false);
zu:
SetTimerEx("Gebannt",1450,false,"d",pID);Und:
stock SpielerSpeichern(playerid){
if(!GetPVarInt(playerid,"loggedin"))return 1;
new pfad[64];
format(pfad,64,"/Accounts/%s.txt",Name(playerid));
dini_IntSet(pfad,"Alter Name",GetPVarInt(playerid,"Alter Name"));
dini_IntSet(pfad,"Level",GetPlayerScore(playerid)),dini_IntSet(pfad,"Geld",GetPlayerMoney(playerid));
dini_IntSet(pfad,"Adminlevel",GetPVarInt(playerid,"Adminlevel"));
dini_IntSet(pfad,"Gesperrt",GetPVarInt(playerid,"Gesperrt")),dini_IntSet(pfad,"Warns",GetPVarInt(playerid,"Warns"));
dini_IntSet(pfad,"IP",GetPVarInt(playerid,"IP")),dini_IntSet(pfad,"Name",GetPVarInt(playerid,"Name"));
dini_IntSet(pfad,"Tode",GetPVarInt(playerid,"Tode"));
dini_IntSet(pfad,"Kills",GetPVarInt(playerid,"Kills")),dini_IntSet(pfad,"Banned1",GetPVarInt(playerid,"Banned1"));
dini_IntSet(pfad,"Kick1",GetPVarInt(playerid,"Kick1")),dini_IntSet(pfad,"Donator",GetPVarInt(playerid,"Donator"));
dini_IntSet(pfad,"Clan",GetPVarInt(playerid,"Clan"));
dini_IntSet(pfad,"Respektpunkte",GetPVarInt(playerid,"Respektpunkte")),dini_IntSet(pfad,"Mute",GetPVarInt(playerid,"Mute"));
return 1;
}
Da du es bei /ban direkt in die Datei speicherst, brauchst du es bei SpielerSpeichern nicht mehr. -
Die Zahl am Ende ist der Umkreis um die Position die du angegeben hast um die alle Objekte mit der angegebenen Model ID entfernt werden.