Beiträge von Jeffry
-
-
Du kannst im CreateDynamicObject die Draw- bzw Streamdistance angeben. Damit kannst du ein solches Verhalten erreichen.
-
Wie erstellst du die Objekte denn? Poste mal eine Beispiel Zeile.
-
Erstellst du die Objekte mit oder ohne Streamer? Falls mit, welchen Streamer nutzt du?
-
new Text3D:Businfo[MAX_VEHICLES];
zu:
new Text3D:Businfo[MAX_VEHICLES] = {Text3D:-1, ...};Und überall wo du:
Delete3DTextLabel(Businfo[jobcar[playerid]]);
hast (oder ähnlich, mit dem Label eben):
if(Businfo[jobcar[playerid]] != Text3D:-1) Delete3DTextLabel(Businfo[jobcar[playerid]]);
Businfo[jobcar[playerid]] = Text3D:-1;Das machst du bei allen Labels so, die irgendwo gelöscht werden. Ist die Variable nämlich ungesetzt, dann ist sie 0, sprich das erste Label wird dann gelöscht (ID 0).
-
Versuche mal einen anderen Material Index (die 0 im dritten Parameter). Versuche da 1 - 9 durch.
-
IsPlayerNPC(i)
Das musst du raus nehmen, ein NPC kann auch auf einem Sitz sitzen. -
Mache einen neuen Thread auf und poste den Code der nicht funktioniert. Ohne Code können wir dir nicht helfen.
-
INVALID_PLAYER_ID ist als 65535 definiert.
-
Bei OnGameModeInit:
SetTimer("SpecInfo",1000,true);Das Callback:
forward SpecInfo();
public SpecInfo()
{
new info[128], Float:health, wp[2], pID;
for(new i=0;i<MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i))continue;
if(gSpectateID[i] != -1)
{
pID = gSpectateID[i];
GetPlayerHealth(pID,health);
format(info,sizeof(info),"Beobachtungsinformationen von: %s (%d)",SpielerName(pID),pID);
PlayerTextDrawSetString(i,t_Name[i],info);
format(info,sizeof(info),"HP: %.2f, Ping: %d, FPS: %d~n~~n~~n~",health,GetPlayerPing(pID),pFPS[pID]);
PlayerTextDrawSetString(i,t_Stats[i],info);
info = "Waffen: ";
for(new x=0;x<6;x++)
{
GetPlayerWeaponData(pID,x,wp[0],wp[1]);
if(wp[0] != 0)
{
format(info,sizeof(info),"%s%d: %s(%d) ",info,x,WaffenName[wp[0]],wp[1]);
}
}
PlayerTextDrawSetString(i,t_WaffenInfo[i],info);
}
}
return 1;
}Und bei OnPlayerConnect und beim beenden des Spectator-Modus:
gSpectateID[playerid] = -1; -
Die nutzen PlayerTextDraws.
https://wiki.sa-mp.com/wiki/CreatePlayerTextDraw -
Das beste wird wohl sein, wenn du einen der Moderatoren kontaktierst, die können dir weiterhelfen.
-
SavePlayer(playerid)
zu:
SavePlayer(playerid);PS: Nutze den Reiter Quellcode über der Schriftart, damit nicht alles in einer Zeile steht.
-
Versuche es mal ohne die direkten Zuweisungen bei der Deklaration:
PUBLIC:UpdateHaus(HausID)
{
new string[350], hstate[5], hrentstate[5], str[50], str1[50];if(HausID < 0 || HausID >= sizeof(HausInfo)) return 0;
if(HausInfo[HausID][hLocked]) hstate = "Ja";
else hstate = "Nein";if(HausInfo[HausID][hRentable] == 1) hrentstate = "Ja";
else hrentstate = "Nein";if(strcmp(HausInfo[HausID][hOwner], "Niemand", true) == 0) str = "\n\nNutze /buyhouse um das Haus zu kaufen!";
if(HausInfo[HausID][hRentable] == 1) str1 = "\nNutze /einmieten um dich einzumieten!";
format(string, sizeof(string), "%s\n\nHaus Nummer: %d\nBesitzer: %s\nVerschlossen: %s\nLevel: %d\nPreis: $%s\nMietpreis: $%s\nMietbar: %s%s%s", HausInfo[HausID][hName], HausInfo[HausID][hID], HausInfo[HausID][hOwner], hstate, HausInfo[HausID][hLevel], GetPoint(HausInfo[HausID][hPreis]), GetPoint(HausInfo[HausID][hMiete]), hrentstate, str, str1);
if(IsValidDynamic3DTextLabel(HausInfo[HausID][hElement])) UpdateDynamic3DTextLabelText(HausInfo[HausID][hElement], COLOR_PICKUPS, string);
else HausInfo[HausID][hElement] = CreateDynamic3DTextLabel(string,COLOR_PICKUPS,HausInfo[HausID][hausx],HausInfo[HausID][hausy],HausInfo[HausID][hausz],10,INVALID_PLAYER_ID,INVALID_VEHICLE_ID,1,0,0,-1,100);if(IsValidDynamicPickup(HausInfo[HausID][hPickup])) DestroyDynamicPickup(HausInfo[HausID][hPickup]);
new pickupID = 1272;
if(strcmp(HausInfo[HausID][hOwner], "Niemand", true) == 0) pickupID = 1273;HausInfo[HausID][hPickup] = CreateDynamicPickup(pickupID, 1, HausInfo[HausID][hausx], HausInfo[HausID][hausy], HausInfo[HausID][hausz], 0);
return 1;
} -
Hast du im Compiler eine mehrzeilige Meldung mit vielen Zahlen?
-
Poste bitte dein UpdateHaus.
-
Der KEY_YES steht für das Z, weil auf der amerikanischen Tastatur das Y an der Stelle ist.
-
Setze den Counter beim letzten Checkpoint (dort wo der Job beendet wird) auf 0:
Strassen_Strecke1[playerid][strasse_Checkpoint1] = 0; -
Das Callback OnPlayerTakeDamage das du eingefügt hast wird wohl über einen Hook schon definiert sein. Die Variablen die als undefined angezeigt werden scheinen dazuzugehören.
Da ich weder die Include kenne noch habe ist es am sinnvollsten wenn du dich mit Slice in Verbindung setzt, der wird dir sagen können, was du machen musst, damit es klappt.Alternativ musst du eben mal suchen, ob du das irgendwo über einen Hook definiert findest, dann kannst du den entsprechenden Code ja dort einfügen.
-
Das kannst du dann so machen:
stock UpdateMieterName(playerid,HausID)
{
for(new i=0; i<30; i++)
{
if(!strcmp(GetName(playerid), HausMieter[HausID][i], true))
{
format(HausMieter[HausID][i], MAX_PLAYER_NAME, "-Niemand-");
new SQL[128];
format(SQL, sizeof(SQL), "UPDATE hauser SET Mieter%i = '-Niemand-' WHERE ID = '%d'", i+1, HausID);
mysql_query(SQL);
return 1;
}
}
return 0;
}Ich habe an der anderen Funktion noch etwas geändert (if-Abfrage), da hatte ich einen alten Code kopiert.
Die muss so aussehen:
stock CheckMieterDatenbank(playerid,HausID)
{
for(new i=0; i<30; i++)
{
if(!strcmp("-Niemand-", HausMieter[HausID][i], true))
{
format(HausMieter[HausID][i], MAX_PLAYER_NAME, GetName(playerid));
new SQL[128];
format(SQL, sizeof(SQL), "UPDATE hauser SET Mieter%i = '%s' WHERE ID = '%d'", i+1, GetName(playerid), HausID);
mysql_query(SQL);
return 1;
}
}
return 0;
}