Wenn ich jetzt die Mülltonne nach dem Attachen lösche wie kann ich diese denn wieder färben?
Du musst die Art beim ersten Erstellen speichern, gleich wie z.B. die Position oder die Objekt ID.
Wenn ich jetzt die Mülltonne nach dem Attachen lösche wie kann ich diese denn wieder färben?
Du musst die Art beim ersten Erstellen speichern, gleich wie z.B. die Position oder die Objekt ID.
Es gehört zwar nur teilweise zu dem Thema aber was würde denn das '%' in Zeile 15 anstellen? @Jeffry
Das ist der Modulo Operator. http://www.mathe24.net/modulo.html
So kann festgestellt werden, ob das Jahr z.B. ohne Rest ( = 0) teilbar ist, damit wäre es ein "jedes 4. Jahr".
Screen 3 (sa-mp-134.png)
So wie es dann Spawnt
( An der Postition wo ich es Geparkt habe bloß mit der Spawn Rotation ?
Poste bitte den Code hiervon.
Sprich wenn man dann zu nem Checkpoint angelangt ist soll es nicht mehr Attached werden aber das Objekt soll sich bewegen und halt wieder in die Hand attached werden.
Um es zu entfernen musst du es mit DestroyDynamicObject löschen, und an der entsprechenden Stelle neu erstellen.
Siehe hier:
Nützliche Codeschnipsel
new age = GetPlayerAge(inputtext);
if(age == -1) return SendClientMessage(playerid, 0xFF0000FF, "Error: Ungültiges Geburtsdatum.");
new stock g_days_m[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
stock GetPlayerAge(input[]) //©Jeffry
{
new date[12];
strcat(date, input);
if(date[1] == '.') strins(date, "0", 0, 12);
if(date[4] == '.') strins(date, "0", 3, 12);
if(!date[9] || date[10]) return -1;
new day = 10*(date[0]-48)+(date[1]-48);
new month = 10*(date[3]-48)+(date[4]-48);
new year = 1000*(date[6]-48)+100*(date[7]-48)+10*(date[8]-48)+(date[9]-48);
if(year < 1000 || year > 9999 || month < 1 || month > 12 || day < 1) return -1;
if(month == 2)
{
if(day > 28 && (year % 4 != 0 || (year % 100 == 0 && year % 400 != 0))) return -1;
}
else if(day > g_days_m[month-1]) return -1;
new d, m, y;
getdate(y, m, d);
new age = y - year;
if(m < month) age--;
else if(m == month && d < day) age--;
return (age < 0) ? (-1) : (age);
}
Im Query steht:
money = '150010',
Laut Query sollte es also auf 150010 in der Datenbank stehen.
Ist das nicht der Fall?
Es sieht nämlich alles korrekt aus.
Heißt dir Spalte in deiner Tabelle auch money?
Das ist die Ladefunktion.
Poste bitte einen Code, mit dem Geld gegeben wird, welches nicht gespeichert wird.
Das Laden scheint ja zu klappen.
Wie gibst du dem Spieler das Geld? Kannst du da mal einen Code Abschnitt posten?
Setze bitte mal nach dem Print der Gespeichert sagt folgenden Print:
print(query);
Was wird dir hier ausgegeben?
Steht der Code beim Betreten des Pickups unter OnPlayerPickUpPickup oder OnPlayerPickUpDynamicPickup? Es sieht fast so aus als steht er bei OnPlayerPickUpPickup.
In letzterem (OnPlayerPickUpDynamicPickup) muss er aber stehen.
Hi, wird der Rest meines Codes im Public aufgerufen wenn ich return 0; in der folgenden Funktion verwende?
Nein, außer AntiWeaponHackSetting ist true, sprich der Timer und das return 0 werden nicht aufgerufen. Sobald aber return 0 aufgerufen wird, wird das aktuelle public beendet.
Das war nur als Quelle gedacht, das ist der Code (ein Teil davon) des Streamer Plugins, in dem ist die Meldung, die du im Log bekommst, zu finden (STRG+F).
Was du benötigst ist das YSF Plugin.
AttachDynamicObjectToPlayer: YSF plugin must be loaded to attach objects to players
Das scheint dann wohl benötigt zu sein. Ist dem Code auch so zu entnehmen (https://github.com/samp-incogn…r/src/natives/objects.cpp).
Setze außerdem nach dem AttachDynamicObjectToPlayer noch ein break; hin, damit nur eine Mülltonne attached wird.
Was gibt dir der MySQL Log aus, wenn du den Server betrittst?
Falls nichts ausgegeben wird, füge mysql_debug(1); bei OnGameModeInit ein und teste es erneut.
Passe testweise eventuell in Zeile 4883
ergebnis = mysql_fetch_int();
zu:
ergebnis = mysql_num_rows();
an, und teste ob es dann klappt.
Beim Laden:
PickupInfo[id][PickupWelt] = welt;
zu:
PickupInfo[id][PickupWelt] = welt;
printf("id: %d, welt: %d", id, welt);
Was wird dir da so ausgegeben, zusammen mit dem Print zuvor beim Betreten des Pickups?
Was steht so im Server Log?
for(new i = 0; i < MAX_MUELLTONNEN1; i++)
{
new zufalltonne = random(3);
Muelltonnen_Info1[i][MuelltonneErstellt1] = true;
Muelltonnen_Info1[i][NachsteMuelltonne1] = 0;
Muelltonnen_Info1[i][MuelltonneArt1] = zufalltonne;
Muelltonnen_Info1[i][Mueltonne] = CreateDynamicObject(Muelltonnen_Info1[i][MuelltonneObjekt1],Muelltonnen_Info1[i][m_t_posX1],Muelltonnen_Info1[i][m_t_posY1],Muelltonnen_Info1[i][m_t_posZ1],Muelltonnen_Info1[i][m_t_posRX1],Muelltonnen_Info1[i][m_t_posRY1],Muelltonnen_Info1[i][m_t_posRZ1]);
printf("Erstellt: i: %d / Objekt: %d", i, Muelltonnen_Info1[i][Mueltonne]);
}
if(newkeys & KEY_SPRINT)
{
for(new i = 0; i < MAX_MUELLTONNEN1; i++)
{
if(IsPlayerInRangeOfPoint(playerid, 3.0, Muelltonnen_Info1[i][m_t_posX1], Muelltonnen_Info1[i][m_t_posY1], Muelltonnen_Info1[i][m_t_posZ1]))
{
printf("Attache: i: %d / Objekt: %d", i, Muelltonnen_Info1[i][Mueltonne]);
//AttachObjectToPlayer(Muelltonnen_Info1[i][Mueltonne], playerid, 0, 0.5, -0.5, 0, 0, 0);
AttachDynamicObjectToPlayer(Muelltonnen_Info1[i][Mueltonne], playerid, 0, 0.5, 0.3, 0, 0, 0);
//SetPlayerSpecialAction(playerid, SPECIAL_ACTION_CARRY);
//DestroyDynamicObject(Muelltonnen_Info1[i][Mueltonne]);
}
}
}
Wird dir im MySQL Log etwas ausgegeben, wenn du den Server verlässt?
Das geht natürlich nur bei OnPlayerPickUpPickup. Sofern dein Abfrage Code woanders ist musst du die Schleife beibehalten. Ich bin einfach mal davon ausgegangen, dass er bei OnPlayerPickUpPickup steht.
Ohne die Schleife, anstatt i pickupid.
PickupInfo[pickupid][PickupWelt]
Das IsPlayerInRangeOfPoint brauchst du auch nicht unbedingt, denn wenn der Spieler das Pickup betritt, ist er ja auch in der Nähe davon.
PickupInfo[PickupInfo[i][ID]][PickupWelt]
Zu
PickupInfo[i][PickupWelt]
Die Schleife kannst du dir so aber eigentlich komplett sparen, da der Index der pickupid entspricht, somit kannst du ohne Schleife direkt anstatt i pickupid nutzen, und hast damit gleich das richtige Pickup, du müsstest nur prüfen, ob das Pickup auch ein solches ist, oder ob z.B. die saveID 0 ist, dann wäre es ein anderes Pickup (falls es das gibt).