new Text3D:myLabel = Text3D:0;
Allerdings ist das standardmäßig sowieso 0, daher ändert die Angabe so erst mal nichts.
new Text3D:myLabel = Text3D:0;
Allerdings ist das standardmäßig sowieso 0, daher ändert die Angabe so erst mal nichts.
Mein Problem liegt in OnDialogResponse.
Dort weiß ich nicht wie ich es schreiben soll.
if(dialogid == DIALOG_AUFTRAGSLISTE)
{
if(!response)return 1;
new counter = -1;
for(new i=0; i < sizeof(HausInfo); i++)
{
if(HausInfo[i][h_Bestellt] != true) continue;
counter++;
if(counter == listitem)
{
SetPlayerCheckpoint(playerid, HausInfo[i][h_X], HausInfo[i][h_Y], HausInfo[i][h_Z], 3);
SendClientMessage(playerid, COLOR_JOB, "Du hast den Auftrag angenommen, begebe dich nun zum Marker.");
PlayerInfo[i][p_ImAuftrag] = counter;
SetPVarInt(playerid, "Haus", 1);
break;
}
}
for(new i=0; i < sizeof(Business); i++)
{
if(Business[i][b_bestellt] != true) continue;
counter++;
if(counter == listitem)
{
//Mache etwas ...
break;
}
}
}
Das er das so nicht möchte, liegt einfach daran, daß du mit der zusätzlichen geschweiften Klammer ein Subarray erstellst. Es müßte mit der zusätzlichen Klammer also so aussehen:
Jo, das wurde mir dann auch klar.
Ich hatte es mit dieser Methode verwechselt, das würde nämlich auch gehen:
new RandomPreisW[] =
{
(850),(412),(212),(971),(311),(156),(215),(666),(500),(450),(350),(300),(700),
(890),(1020),(1100),(1400),(206),(150),(441),(868),(1500),(540),(850),(850)
};
new RandomPreisG[] =
{
(65),(70),(75),(80),(85),(90),(95),(100),(105),(110),(115),(120),(125),
(130),(135),(140),(145),(150),(155),(160),(165),(170),(175),(50),(55)
};
Prinzipiell hätte es aber auch sein können, dass er es mit den geschweiften Klammern frisst, da ein eindimensionales Array mit einem Index ja praktisch eine normale Variable ist. Dem war nur leider nicht so.
Versuche es so:
MoveObject(BaumID[i],Baeume[i][BX]-0.1, Baeume[i][BY]-0.1, Baeume[i][BZ]-0.1,0.05, 90.0,0.0,0.0);
Wie sieht denn dein Code jetzt aus?
In dem watch Befehl muss das hier nach der sscanf Zeile stehen:
specID[playerid] = playerID;
Aber nicht direkt danach, sondern dort, wo der Spectate-Modus gestartet wird, also ziemlich unten.
Sonst hat der Wert immer 0, deshalb klappt es nicht.
Du kannst als Sicherheit auch noch bei OnPlayerSpawn das
if(specID[i] == playerid)
zu:
if(specID[i] == playerid && GetPlayerState(i) == PLAYER_STATE_SPECTATING)
https://wiki.sa-mp.com/wiki/ForceClassSelection
Ein Beispiel ist dort dabei.
Das passt so, sind ja nur DEBUG Meldungen, also Informationen. Die drei Warnungen ganz oben kannst du in dem Fall ignorieren., die werden wie gesagt, mit aller Wahrscheinlichkeit keinen Schaden anrichten.
Scheint der gleiche Fehler zu sein wie der von malE hier:
[SAMMELTHREAD] Kleine Scripting Fragen
Da kannst du dir raussuchen welche Warnung du lieber ignorierst. Ich würde das einfach mal ignorieren, solange es nur einmal kommt und auch sonst keine negativen Auswirkungen auftreten.
Ohne Code können wir dir nicht helfen. Poste bitte den Code und erkläre das Problem anhand des Codes.
Tipps: Scripting-Probleme richtig erklären
Du könntest ja mal versuchen bei OnGameModeExit/OnFilterScriptExit das hier einzufügen, vielleicht wurde das vergessen:
mysql_close();
Ja, einmal ist es ja beim Start/Restart normal.
Ja, wirklich stören wird der nicht, das wirst du auch nirgends negativ merken.
Ich könnte mir vorstellen, dass das mysql_connect oder der Code wo es drin steht, vielleicht mehrmals aufgerufen wird, wodurch auch immer.
Dann müsste aber, sofern es der Code ist, den du vorhin gepostet hast, im Server Log dieser print mehrmals drin stehen:
print("SERVER: Verbindung zur Datenbank wurde erfolgreich hergestellt.");
Ist dem nicht so, dann wird das mysql_connect noch wo anders ausgeführt.
Da kannst du ja mal danach schauen und das im Auge behalten, aber wie gesagt, es wird sich mit aller Wahrscheinlichkeit nicht negativ auf den Server auswirken, solange die Meldung nicht 100 mal kommt.
Dann wäre es gut, wenn du einen separaten Thread auf machst und dort nochmal die aktuellen Codes postest, und nochmal dazu erklärst, was genau passiert, und was du manuell machst (eingibst, Schritt für Schritt) damit es wieder korrekt geht.
Ändere da mal:
cache_get_field_content(0,"Text",msg);
zu:
if(rows) cache_get_field_content(0,"Text",msg);
else msg = "-None-";
Jeweils die Schleife nochmal unter die andere setzen, nur anstatt HausInfo eben mit Business.
Ansonsten brauchst du nicht viel zu ändern, nur eben die Variablen. Den Aufbau kannst du komplett übernehmen, sprich die Schleife jeweils.
Interessant, der will das so nicht. Da hab ich auch mal wieder was dazu gelernt.
So klappt es:
new RandomPreisW[] =
{
850,412,212,971,311,156,215,666,500,450,350,300,700,
890,1020,1100,1400,206,150,441,868,1500,540,850,850
};
new RandomPreisG[] =
{
65,70,75,80,85,90,95,100,105,110,115,120,125,
130,135,140,145,150,155,160,165,170,175,50,55
};
Oh, ich seh grade bei den Variablen fehlt noch das Array, sorry, das muss so aussehen:
new RandomPreisW[] =
{
{850},{412},{212},{971},{311},{156},{215},{666},{500},{450},{350},{300},{700},
{890},{1020},{1100},{1400},{206},{150},{441},{868},{1500},{540},{850},{850}
};
new RandomPreisG[] =
{
{65},{70},{75},{80},{85},{90},{95},{100},{105},{110},{115},{120},{125},
{130},{135},{140},{145},{150},{155},{160},{165},{170},{175},{50},{55}
};
Du musst mit dem Index auf die Variable zugreifen, so:
forward PreiseBerechnen();
public PreiseBerechnen()
{
new randW = random(sizeof(RandomPreisW));
WaffenPreis = RandomPreisW[randW];
new randG = random(sizeof(RandomPreisG));
GrasPreis = RandomPreisG[randG];
return 1;
}
Das ist ein anderer Fehler. Ich kann anhand dem Log aber nicht erkennen, wo der Fehler ist, das musst du selbst herausfinden, wann der Fehler auftritt.
Das erste ist "nur" eine Warnung, prinzipiell ist diese Warnung nicht so schlimm, falls du da keine Stelle findest, an der du noch eine Verbindung aufbaust.