if(newkeys == 16 && GetPlayerVirtualWorld(playerid) == 0 || SpielerInfo[playerid][Arena] != 2)
zu:
if(newkeys & KEY_SECONDARY_ATTACK && GetPlayerVirtualWorld(playerid) == 0 || SpielerInfo[playerid][Arena] != 2)
Beiträge von Jeffry
-
-
Schreibe den Teil ganz oben hin in den Befehl:
if(vehicle3Dtext[GetPlayerVehicleID(playerid)] != Text3D:-1)
{
DestroyDynamic3DTextLabel(vehicle3Dtext[GetPlayerVehicleID(playerid)]);
vehicle3Dtext[GetPlayerVehicleID(playerid)] = Text3D:-1;
return SendClientMessage(playerid, -1, "Entfernt");
}Sonst wird jedes mal wieder ein weiteres Label erstellt.
-
nur 1 mal und ich habe alles von dir übernommen
Kannst du bitte mal den kompletten Server Log posten, der generiert wird, wenn du den Server startest?
Bitte den Log zuvor löschen.Steht das Register/Login System im Gamemode oder in einem Filterscript?
-
Der Cache scheint durch das updateHaus gelöscht zu werden.
Versuche es so:
forward OnHausesLoad();
public OnHausesLoad()
{
new num_fields,num_rows,str[128];
cache_get_data(num_rows,num_fields,Handle);
if(!num_rows)return 1;
for(new i=0; i<num_rows; i++)
{
new hid=getFreeHausID();
hInfo[hid][h_id]=cache_get_field_content_int(i,"id",Handle);
hInfo[hid][h_x]=cache_get_field_content_float(i,"h_x",Handle);
hInfo[hid][h_z]=cache_get_field_content_float(i,"h_z",Handle);
hInfo[hid][h_y]=cache_get_field_content_float(i,"h_y",Handle);
hInfo[hid][ih_x]=cache_get_field_content_float(i,"ih_x",Handle);
hInfo[hid][ih_z]=cache_get_field_content_float(i,"ih_z",Handle);
hInfo[hid][ih_y]=cache_get_field_content_float(i,"ih_y",Handle);
hInfo[hid][h_besitzer]=cache_get_field_content_int(i,"h_besitzer",Handle);
hInfo[hid][h_interior]=cache_get_field_content_int(i,"h_interior",Handle);
hInfo[hid][h_preis]=cache_get_field_content_int(i,"h_preis",Handle);
hInfo[hid][h_lock]=cache_get_field_content_int(i,"h_lock",Handle);
format(str, sizeof(str), "Haus(ID: %i) geladen. (X: %f | Y: %f | Z: %f | HID: %i )",hInfo[hid][h_id],hInfo[hid][h_x],hInfo[hid][h_y],hInfo[hid][h_z],hid);
print(str);
}
for(new i=0; i<num_rows; i++) updateHaus(i);
return 1;
} -
Das liegt wahrscheinlich daran, dass der print die 1024 Zeichen überschreitet.
Mache es so:
public OnQueryError(errorid, error[], callback[], query[], connectionHandle)
{
new str[1000];
printf("[MYSQL-ERROR] %i - %s in Callback %s on connection %i", errorid, error, callback, connectionHandle);
format(str, sizeof(str), "[MYSQL-ERROR] %s", query);
print(str);
}Dass keine Befehle und auch sonst nichts funktioniert liegt möglicherweise daran, dass ein oder mehrere Plugins nicht geladen werden können und/oder die Datenbank nicht oder fehlerhaft vorhanden ist.
Prinzipiell ist es nicht zu empfehlen als Anfänger ohne große Kenntnisse sich einfach einen Server herunterzuladen und diesen zu "nutzen".
-
Script[gamemodes/beispiel.amx]: Run time error 20: "Invalid index parameter (bad entry point)"
Kommt die Meldung nur einmal, oder ganz oft?
-
dann können alle anderen die Fahrzeuge von allen anderen Auf/Zuschließen.
Ah, sorry, stimmt. Hab falsch herum gedacht, weil wir die ganze Zeit beim Einstieg waren. Das ist ja ein Befehl zum Abschließen.
Dennoch muss das && zu einem
dann gewechselt werden, wie @[IRP]Rob_Clare schon richtig sagte, sonst klappt es nur, wenn er Leader und Member ist, was er wahrscheinlich nicht gleichzeitig sein kann.
Allerdings mit "playerid" anstatt "forplayerid".
Habe den Code oben angepasst.Außerdem noch:
iPlayerVehicle
zu:
vehicleidEDIT:
ok jetzt kann man immer einsteigen also egal was man ist
Ich habe das grade mal ausprobiert, bei mir funktioniert es problemlos.

Code:
public OnVehicleStreamIn(vehicleid, forplayerid)
{
//Eine Schleife durch alle Fraktions-Fahrzeuge
for(new i=0; i<MAX_FRAC_VEHICLES; i++)
{
//Wenn die vehicleid die gleiche ist, wie die des Fraktions-Fahrzeugs
if(fracVehicle[i][e_vID] == vehicleid)
{
//Jetzt brauchen wir die Variable, mit der Dein vorher bereits existierendes Fraktions-System arbeitet.
//Ich nehme jetzt einfach eine Beispiel-Variable, diese musst Du selbst mit der ersetzen,
//die Dein System verwendet.
//Es geht um diese Variable: PlayerInfo[playerid][pFraction]
if(PlayerInfo[forplayerid][pFraction] != fracVehicle[i][e_fracID])
{
//Wenn der Spieler nicht in der Fraktion ist, die das Fahrzeug verwenden darf,
//dann darf er es nicht betreten.
SetVehicleParamsForPlayer(vehicleid, forplayerid, 0, 1);
}
break; //Es gibt ja keine zwei gleichen Fahrzeuge
}
}
return 1;
}Die Animation macht er allerdings nur, wenn man als Beifahrer (Taste G) einsteigen will.
Bei dir wäre das dann:
public OnVehicleStreamIn(vehicleid, forplayerid)
{
//Eine Schleife durch alle Fraktions-Fahrzeuge
for(new i=0; i<MAX_FRAC_VEHICLES; i++)
{
//Wenn die vehicleid die gleiche ist, wie die des Fraktions-Fahrzeugs
if(fracVehicle[i][e_vID] == vehicleid)
{
//Jetzt brauchen wir die Variable, mit der Dein vorher bereits existierendes Fraktions-System arbeitet.
//Ich nehme jetzt einfach eine Beispiel-Variable, diese musst Du selbst mit der ersetzen,
//die Dein System verwendet.
//Es geht um diese Variable: PlayerInfo[playerid][pFraction]
if(SpielerInfo[forplayerid][pMember] != fracVehicle[i][e_fracID] && SpielerInfo[forplayerid][pLeader] != fracVehicle[i][e_fracID])
{
//Wenn der Spieler nicht in der Fraktion ist, die das Fahrzeug verwenden darf,
//dann darf er es nicht betreten.
SetVehicleParamsForPlayer(vehicleid, forplayerid, 0, 1);
}
break; //Es gibt ja keine zwei gleichen Fahrzeuge
}
}
return 1;
} -
stock FraktionenLaden()
{
mysql_pquery(handle, "SELECT * FROM fraktionen", "LoadFrakData");
return 1;
}Unten im Code:
forward LoadFrakData();
public LoadFrakData()
{
new rows;
cache_get_row_count(rows);
for(new i = 0; i < rows; i++)
{
cache_get_value_name_int(i, "id", fI[i][fID]);
cache_get_value_name_int(i, "money", fI[i][fMoney]);
//...
}
return 1;
}Beachte, dass du in OnGameModeInit zuvor die Verbindung zur Datenbank herstellen musst.
Falls du dazu Hilfe benötigst, empfehle ich dir dieses Tutorial:
[jTuT] MySQL R41 (Installation, XAMPP, Verwendung, Bedienung & Registrations-System) -
supersystem denoch weiter so bester man
Danke.
Ich werde es am Wochenende mal bei mir ausprobieren, ob es irgendwie zum lafen zu bekommen ist.#Edit: hab dir mal den Befehl zusammen gebaut, jedoch nicht getestet.
if(SpielerInfo[forplayerid][pMember] == fracVehicle[i][e_fracID] && SpielerInfo[forplayerid][pLeader] == fracVehicle[i][e_fracID])
zu
if(SpielerInfo[playerid][pMember] == fracVehicle[i][e_fracID] || SpielerInfo[playerid][pLeader] == fracVehicle[i][e_fracID]) -
ok jetzt kann man immer einsteigen also egal was man ist
Wird der Code aufgerufen? Setze da mal einen Print hin, oder zwei.
Alternativ kannst du die Schleife auch in einen Sekundentimer packen, um zu schauen ob es da geht.
Ich bin kein Freund von diesen Abschließ-Funktionen, da die ziemlich schlecht funktionieren, daher weiß ich nicht, unter welchen Umständen das nicht immer klappt.Jeffry: was man noch machen könnte, wäre die Seat Position abfragen(Zwecks Beifahrer). Da wäre denn "OnPlayerEnterVehicle" besser.
Die Seat Position bekommst du bei OnPlayerEnterVehicle nicht raus, du kannst nur mit "ispassenger" prüfen, ob Fahrer oder nicht.
Könnte man natürlich machen, wenn gewünscht. Das Tutorial schließt das ja nicht aus. -
zu forplayerid ?
Ah, ja.
Muss forplayerid sein. -
Gibt es die Moeglichkeit wie bei C, if-else Bedingungen mit xyz ? xyz: 2xyz auszudruecken? Also mit bool?
Ja, genau gleich.
2. Gibt es irgendein Include fuer pawn das Mathematische Funktionen wie z.B. um von einer Komplexen Zahl die komplex konjugierte Zahl zu bilden, oder um 2 Polynome zu falten oder sowas?
Das weiß ich nicht.
Möglicherweise ist hier was hilfreiches dabei: http://forum.sa-mp.com/showthread.php?t=591010 -
Jetzt hast du ja die TogglePlayerControllable erst wieder im Code?
So, mit deiner Abfrage:
//Eine Schleife durch alle Fraktions-Fahrzeuge
for(new i=0; i<MAX_FRAC_VEHICLES; i++)
{
//Wenn die vehicleid die gleiche ist, wie die des Fraktions-Fahrzeugs
if(fracVehicle[i][e_vID] == vehicleid)
{
if(SpielerInfo[forplayerid][pMember] != fracVehicle[i][e_fracID] && SpielerInfo[forplayerid][pLeader] != fracVehicle[i][e_fracID])
{
//Wenn der Spieler nicht in der Fraktion ist, die das Fahrzeug verwenden darf,
//dann darf er es nicht betreten.
SetVehicleParamsForPlayer(vehicleid, forplayerid, 0, 1);
}
break; //Es gibt ja keine zwei gleichen Fahrzeuge
}
} -
Das die animation nicht gecleart wird sondern die türen richtig zu sind und er daran zieht
Versuche es so:
Entferne den Code von OnPlayerEnterVehicle und schreibe stattdessen bei OnVehicleStreamIn:
//Eine Schleife durch alle Fraktions-Fahrzeuge
for(new i=0; i<MAX_FRAC_VEHICLES; i++)
{
//Wenn die vehicleid die gleiche ist, wie die des Fraktions-Fahrzeugs
if(fracVehicle[i][e_vID] == vehicleid)
{
//Jetzt brauchen wir die Variable, mit der Dein vorher bereits existierendes Fraktions-System arbeitet.
//Ich nehme jetzt einfach eine Beispiel-Variable, diese musst Du selbst mit der ersetzen,
//die Dein System verwendet.
//Es geht um diese Variable: PlayerInfo[playerid][pFraction]
if(PlayerInfo[playerid][pFraction] != fracVehicle[i][e_fracID])
{
//Wenn der Spieler nicht in der Fraktion ist, die das Fahrzeug verwenden darf,
//dann darf er es nicht betreten.
SetVehicleParamsForPlayer(vehicleid, playerid, 0, 1);
}
break; //Es gibt ja keine zwei gleichen Fahrzeuge
}
} -
ich benutze mysql R4.1.2
Du meinst R41-2 oder?
Bei carinDB:
mysql_pquery(handle,query);
zu:
mysql_pquery(handle,query, "spielerfahrzeug", "d", carid);Und falls die Zeile 1767 (Warnung-Zeile) diese Zeile ist:
cInfo[carid][faid]=cache_insert_id(handle);
zu:
cInfo[carid][faid]=cache_insert_id(); -
Jedes mal wenn ich den Serverrestarte tritt ein neuer Fehler auf wie schon gesagt obwohl das gar kein Fehler ist irgendwie weil vorher alles funktionierte.
Und beim einloggen bekomm ich immer ein Crash wenn ich danach erneut einlogge geht es wieder, ich weiß echt nicht woran das liegen kann.Dann würde ich empfehlen, diesen Code nicht zu nutzen. Ich empfehle ohnehin keine fertigen Gamemodes zu nutzen, aber das ist ein anderes Thema.
Alternativ poste bitte mal den Code um die Zeile 39386 und markiere die Zeile 39386.
-
Danke!
//edit währe geil wenn du noch sagen könntes wie ich flock genau rein baue
Was soll der Befehl genau machen?
-
Natürlich. Du speicherst die Eingabe ja auch nur, wenn eine falsche Eingabe gemacht wurde.
format(sI[playerid][pGeburtstag], 11, inputtext);
muss nach den if-block (praktisch in Zeile 10 in obigem Code). -
http://forum.sa-mp.com/showpost.php?p=1654745&postcount=6
Prinzipiell:
TogglePlayerSpectating zu true & SetSpawnInfo bei OnPlayerRequestClass
TogglePlayerSpectating zu false & SpawnPlayer bei OnDialogResponse -
Das Passwort muss ja beim einloggen auch enthasht werden.
Nein, es wird nur aus dem was du eingibst wieder ein Hash erzeugt und mit dem Hash in der Datenbank verglichen. Sind die gleich, geht es durch.
Die Variable pAlter ich auf das Geburtstagsdatum defeniert. ich möchte eigentlich das Alter(also z.B als 18 Jahre) angezeigt wird.
Dann musst du dort auch das Alter rein schreiben.
sI[playerid][pAlter] = GetPlayerAge(inputtext);Allerdings aktualisiert sich das ja nicht.
Daher ist es sinnvoller, du speicherst den Geburtstag
format(sI[playerid][pGeburtstag], 11, inputtext);Und machst dann in dem Dialog anstatt
sI[playerid][pAlter]
das:
GetPlayerAge(sI[playerid][pGeburtstag])