Timer zieht ja ordentlich oder?
Naja, das kommt darauf an, wie der Code in deinem Timer ist.
Grundsätzlich solltest du dich aber eher danach richten, wie es gut aussieht, also probier doch einfach mal rum ![]()
Timer zieht ja ordentlich oder?
Naja, das kommt darauf an, wie der Code in deinem Timer ist.
Grundsätzlich solltest du dich aber eher danach richten, wie es gut aussieht, also probier doch einfach mal rum ![]()
Hey, vielleicht ist das etwas, was dich interessieren könnte: https://wiki.sa-mp.com/wiki/DoorStates
Und wie verwende ich dieses um zb abzufragen ob das Auto keine türen mehr hat ?
Ich habe es jetzt so aber geht tut es nicht
ocmd:vlock(playerid, params[])
{
new vehicleid,Float:aux, Float:auy, Float:auz;
new panels, doors, lights, tires;
GetVehicleDamageStatus(vehicleid,panels,doors,lights,tires);
if(GetDoorState(doors, DOOR_HOOD, IS_OPENED | IS_DAMAGED))
{
SendClientMessage(playerid, -1, "The hood of your vehicle is both opened and damaged!");
}
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
vehicleid = GetPlayerVehicleID(playerid);
}
else
{
vehicleid = GetClosestVehicle(playerid);
if(!PlayerToVehicle(playerid, vehicleid, 5.0)) vehicleid = 0;
}
if(!vehicleid) return SendClientMessage(playerid, COLOR_RED, "Du bist bei kein deiner Fahrzeuge");
new id = GetVehicleID(vehicleid);
if(!IsValidVehicle(id)) return SendClientMessage(playerid, COLOR_RED, "Du hast die Schlüssl nicht für dieses Fahrzeug");
if(GetPlayerVehicleAccess(playerid, id) < 2)
return SendClientMessage(playerid, COLOR_RED, "Du hast die Schlüssl nicht für dieses Fahrzeug");
new engine, lights, alarm, doors, bonnet, boot, objective;
GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
if(doors == 1)
{
doors = 0;
VehicleLock[id] = 0;
GameTextForPlayer(playerid, "~g~Car Aufgeschlossen", 3000, 6);
GetPlayerPos(playerid, aux, auy, auz);
PlayerPlaySound(playerid,1145, aux, auy, auz+5);
TextDrawSetString(SpeedoTuren[playerid],"Tueren ~g~Aufgeschlossen");
}
else
{
doors = 1;
VehicleLock[id] = 1;
GameTextForPlayer(playerid, "~r~Car Abgeschlossen", 3000, 6);
GetPlayerPos(playerid, aux, auy, auz);
PlayerPlaySound(playerid,1145, aux, auy, auz+5);
TextDrawSetString(SpeedoTuren[playerid],"Tueren ~r~Abegschlossen");
}
SetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
SaveVehicle(id);
return true;
}
aber geht tut es nicht
Ja...was geht denn nicht?!
Du musst DOOR_DRIVER und DOOR_PASSENGER checken, wenn du die Türen abfragen magst.
kapiere ich nicht -.-
es ist dumm in wiki erklärt
kein vernüftiges beispiel nix...... kann ich verzichten hat sich erledigt
kapiere ich nicht -.-
es ist dumm in wiki erklärt
kein vernüftiges beispiel nix...... kann ich verzichten hat sich erledigt
Also die samp wiki erklärt das alles sehr gut.
Kaliber hat es doch da geschrieben.
Also die samp wiki erklärt das alles sehr gut.
Kaliber hat es doch da geschrieben.
schon aber da sind zb fehler drin ein , fehlt und das was ich wollte geht woll nicht ich will ja nur abfragen ob er keine tür mehr hat damit zb vlock nicht mehr geht aber das hat es wohl nicht
vlt hilft das
https://wiki.sa-mp.com/wiki/GetVehicleDamageStatus
//edit alles aus wiki hier das was Kaliber meint https://wiki.sa-mp.com/wiki/DoorStates
//edit2: musst halt anstatt damaged Removed nehmen
//sry mit handy
Irgendwas stimmt mit meinem Bannsystem nicht.
Sobald ich jemanden banne, kann diese Person auch wenn sie entbannt ist den Server nicht betreten.
Sobald man connecten will kommt sofort "Server closed the connection." und es passiert nichtsmehr.
Im Log steht auch nur: "[12:20:59] [connection] incoming connection: **.**.**.**:***** id: 0" (IP zensiert)
Nach einem Restart funktioniert es wieder, und man sieht dann auch die Banninfo.
Es ist auch egal mit welchem Accountnamen man sich einloggt, sogar wenn die IP nicht gebannt wurde, kommt man nichtmehr auf den Server.
Banbefehl:
CMD:ban(playerid, params[])
{
if(pInfo[playerid][pAdmin] < 2) return SendCmdMessage(playerid);
new targetid, Reason[128];
if(sscanf(params, "us[128]", targetid, Reason)) return SendUsageMessage(playerid,"/ban [ID/Name] [Grund]");
if(!IsPlayerConnected(targetid)) return SendErrorMessage(playerid,"Der gewählte Spieler ist nicht auf dem Server.");
if(strlen(Reason) > 128) return SendErrorMessage(playerid,"Der gewählte Grund ist zu lang.");
printf("[warning] %s bannt %s mit dem Grund %s",GetName(playerid),GetName(targetid),Reason);
BanWithReasonNoIP(playerid, targetid, Reason);
return 1;
}
BanWithReasonNoIP:
BanWithReasonNoIP(playerid = INVALID_PLAYER_ID, targetid, reason[])
{
if(playerid == INVALID_PLAYER_ID) return 1;
new Query[256], string[145], day, month, year, second, minute, hour, datestring[24], timestring[24];
getdate(day, month, year);
gettime(hour, minute, second);
format(datestring, sizeof(datestring), "%02d.%02d.%d", year, month, day);
format(timestring, sizeof(timestring), "%02d:%02d:%02d", hour, minute, second);
mysql_format(handle,Query, sizeof(Query), "INSERT INTO `banned` (`NAME`, `IP`, `REASON`, `ADMIN`, `DATE`, `TIME`, `STAMP`, `DBID`) VALUES ('%e', 'N/A', '%e', '%e', '%e', '%e','0','%d')", DB_Escape(GetName(targetid)), DB_Escape(reason), DB_Escape(GetName(playerid)), DB_Escape(datestring), DB_Escape(timestring),pInfo[targetid][pDbID]);
mysql_pquery(handle,Query);
format(string, sizeof(string), "BAN: %s hat %s permanent gebannt. [Grund: %s]", GetName(playerid), GetName(targetid), reason);
SendBan(string);
format(string, sizeof(string), "%s bannt %s [Grund: %s]",GetName(playerid),GetName(targetid),reason);
Log(string,"ban");
BanCounter++;
TogglePlayerControllable(targetid,0);
SetTimerEx("KickTimer", 100, true, "i", targetid);
return 1;
}
Ich seh einfach den Fehler nicht...
Mal kurze Anmerkungen:
if(strlen(Reason) > 128)
Das ist unmöglich..wenn Reason nur 128 Cells hat, können da nicht plötzlich mehr rein ![]()
DB_Escape
Das musst du nicht nutzen, das ist doppel gemoppel, %e macht das schon.
Du hast viele Funktionen noch, die wir nicht sehen und kennen, wie z.B. SendBan...
Aber ich vermute mal, es tritt ein Fehler auf, hast du mal crashdetect geladen? ![]()
Heyho ich habe ein kleines Problem mit meinem Biz System...
stock getBizID(){
for(new i = 0; i < sizeof(bInfo); i++){
if(bInfo[i][biz_id] == 0) continue;
printf("Biz: %s(%i) wurde Geladen | X: %f | Y: %f | Z: %f", bInfo[i][biz_name], bInfo[i][biz_id], bInfo[i][biz_x], bInfo[i][biz_y], bInfo[i][biz_z]);
return bInfo[i][biz_id];
}
return -1;
}
public OnLoadTanke(){
new rows;
cache_get_row_count(rows);
for(new i = 0; i < sizeof(rows); i++){
printf("%i", getBizID());
}
return 1;
}
Als Ausgabe erhalte ich:
Es sind allerdings 2 Bizzen im bInfo array drinne...
habt ihr eine idee?
Die Funktion ist schon relativ alt und hatte anfangs SQLite genutzt wegen dem DB_Escape...
SendBan schickt nur eine Chatnachricht ab, mehr nicht.
Aber Nein, es treten keine Fehler auf. Sobald man connectet kommt wie gesagt nur die "Incoming connection:" Nachricht und das wars. Crashdetect ist auch drauf.
Nach einem Restart des Servers funktioniert ja auch auf einmal alles.
sizeof(rows)
...das ist kein String, sondern ein int. Musst hier nur rows verwenden.
Nachricht und das wars
Wie sollen wir dir jetzt helfen? ![]()
Musst halt mal alles printen..unter OnPlayerConnect usw...
Irgendwo bleibt er hängen, wahrscheinlich bei deiner Abfrage, ob der Spieler gebannt ist oder nicht und dann wird er wieder gekickt..
@LeonMrBonnie
Das kann auch an SA:MP liegen, kannte das Problem schon immer wenn ich irgendwo entbannt wurde
das man mir gesagt hat ich soll mein Router neu starten sonst kam da halt immer diese Meldung das man gebannt ist.
das man mir gesagt hat ich soll mein Router neu starten sonst kam da halt immer diese Meldung das man gebannt ist.
Nein, dann hatten die die Funktion [wiki]Ban[/wiki] verwendet. Diese sorgt dafür, dass deine IP gebannt wird und durch einen Router restart, bekommst du eine andere IP.
Hier verwendet er aber nur Kick und prüft ob der Account gebannt ist.
...das ist kein String, sondern ein int. Musst hier nur rows verwenden.
Ups ja gut ... hab in dem moment falsch gedacht ... Nun zeigt er mir 2x "-1" in der Serverlog an ... Woran könnte das ggf. liegen? also der führt die for schleife nicht aus ...
Hab Prints unter OnPlayerConnect und meine Abfrage gesetzt, wird aber nichtmal der erste Print gezeigt.
Also es wird OnPlayerConnect garnicht aufgerufen.
probiers mal so: