Das Limit eines Integers ist 2.147.483.647, daher wird es nicht funktionieren. Was du machen könntest, ist das Geld im String zu formatieren, sodass man mehr als 2.147.483.647 haben kann.
Beiträge von Campbell
-
-
Der Query sollte wie folgt aussehen:
Das bedeutet für dein Beispiel:
#e: Es ist aber sehr komisch, dass dir die ganze Datenbank verloren geht, nur weil XAMPP mal abschmiert. Mach dir einfach sicherheitsweise ein Backup in phpMyAdmin, so kannst du mit 2 Klicks alles neu aufsetzen. -
Warum so umständlich, wenn die Lösung schon gegeben wurde?
stock GetCashResult(betrag)
{
new idx[20], part;
format(idx, sizeof(idx), "%i", betrag);
part = strlen(idx)-3;
while(part > 0)
{
strins(idx, ".", part);
part -= 3;
}
return idx;
} -
Du erstellst einen PlayerTextDraw und setzt eben jedes mal, wenn sich der Score ändert den String des TextDraws erneut. Wichtig ist, dass du einen PlayerTextDraw erstellst und nicht einen, da sonst jeder den gleichen Score sehen würde.
-
Im befehl geht es ja wen ich /port mache werde ich in den Interrior gesetzt.
Aber offensichtlich ist der Interior 1 der falsche. -
-
Lass die ganzen return's weg und benutz ganz einfach 'else' wenn du schon 'if' benutzt. Und benutz bitte eine if-Schleife um zu testen, ob jemand in einer bestimmten Gegend ist.
ocmd:startbonus(playerid)
{
if(GetPVarInt(playerid,"StartBonus") < 1)
{
if(IsPlayerInRangeOfPoint(playerid,4,1734.9404,-1943.8406,13.5688))
{
GivePlayerMoney(playerid,10000);
SendClientMessage(playerid,GELB,"Herzlicht Glückwunsch Schmeiß das Geld nicht gleich ausem Fenster");
SetPlayerScore(playerid,1);
SetPVarInt(playerid,"StartBonus",1);
}
}
else
{
SendClientMessage(playerid,ROT,"Du hast dein Bonus schon eingelöst.");
}
return 1;
} -
Wie bereits gesagt, dir fehlt eine geschweifte Klammer:
if(GetVehicleModel(vehicleid) == 448 || GetVehicleModel(vehicleid) == 461 || GetVehicleModel(vehicleid) == 462 || GetVehicleModel(vehicleid) == 463 || GetVehicleModel(vehicleid) == 468 || GetVehicleModel(vehicleid) == 471 || GetVehicleModel(vehicleid) == 521 || GetVehicleModel(vehicleid) == 522 || GetVehicleModel(vehicleid) == 523 || GetVehicleModel(vehicleid) == 581 || GetVehicleModel(vehicleid) == 586)
{
if(newstate == PLAYER_STATE_DRIVER && PlayerInfo[playerid][BikeL] != 1)
{
RemovePlayerFromVehicle(playerid);
SendClientMessage(playerid, Rot, "Du hast keinen Motorradschein");
}
} // <-- Diese Klammer fehlt.
Und das Ganze muss in OnPlayerStateChange und nicht in OnPlayerEnterVehicle! -
Bei deinem Beispiel wird der Geldbetrag aber nur formatiert, wenn der Betrag zwischen 1000000 und 9999999 liegt. Schau dir mein Beispiel oben an, damit du siehst, wie es zum Beispiel mit 2500 funktioniert.
-
Wenn du nur den Himmel siehst, und nicht fällst, dann bist du im flaschen Interior. Setze deinen Interior einfach mal bis hoch von 0 zu 20. Irgendwann sollten die Objekte dann angezeigt werden.
-
Ich habe gedacht dass er Verstand hat und wüsste, dass man es mit dem newstate PLAYER_STATE_DRIVER und OnPlayerKeyStateChange muss.
Ich kann Scripten, keine Sorge.lg
OnPlayerKeyStateChange != OnPlayerStateChange.An EliteBread: Schau dir nochmals an was ich in meinem vorherigen Post gesagt habe, so wie du es jetzt machst wird es nicht funktionieren. Ebenfalls musst du vor return 1 noch eine Klammer zu machen.
-
Alternativ, wenn du dir nicht sicher bist....
if(PlayerInfo[playerid][BikeL] != 1)
{
new Float:X, Float:Y, Float:Z;
RemovePlayerFromVehicle(playerid);
SendClientMessage(playerid, Rot, "Du hast keinen Motorradschein");
}lg
Wenn du den Thread verfolgt hättest, hättest du bemerkt, dass dies unter OnPlayerEnterVehicle nicht möglich ist, da OnPlayerEnterVehicle ausgeführt wird, wenn der Spieler die Einsteigen-Taste drückt und nicht wenn er im Auto ist. Du kannst aber folgendes in OnPlayerStateChange verwenden:
if(newstate == PLAYER_STATE_DRIVER && PlayerInfo[playerid][BikeL] != 1)
{
RemovePlayerFromVehicle(playerid);
SendClientMessage(playerid, Rot, "Du hast keinen Motorradschein");
} -
Die Variable geld muss natürlich hier noch ergänzt werden, dennoch sollte es wie folgt funktionieren:
new idx[20], part;
format(idx, sizeof(idx), "%i", geld);
part = strlen(idx)-3;
while(part > 0)
{
strins(idx, ".", part);
part -= 3;
} -
Du könntest wie folgt vorgehen:
#define ALTCMD:%1->%2; \
ocmd:%1(playerid, params[]) \
return ocmd:%2(playerid, params[]);ocmd:Deincmd(playerid, params[])
{
// Dein Command hier ...
}
ALTCMD:deincmd->Deincmd; -
Schau dir die Informationen im SA:MP Wiki an. Du hast deine Werte etwas durcheinandergeworfen.
Zitat
model The model of the pickup.
type The pickup spawn type.
Float:X The X coordinate to create the pickup at.
Float:Y The Y coordinate to create the pickup at.
Float:Z The Z coordinate to create the pickup at.
virtualworld The virtual world ID of the pickup. Use -1 to make the pickup show in all worlds.
Deine jetzige Virtual World, die du angegeben hast, ist 43.1207, und daher kann es nicht stimmen, da eine Virtual World immer eine ganze Zahl sein muss (1, 2, 3, ...). -
Also die richtige Fraktion wird angezeigt, nur wird das Geld nicht gesetzt.
//Edit Informationen
Das der Fraktion oder das Geld des Spielers? -
Eine Virtual World kann keine Kommastellen haben. Siehe: http://wiki.sa-mp.com/wiki/CreatePickup
-
Versuch es mal so oder verwende deinen Code unter OnPlayerStateChange mit dem newstate PLAYER_STATE_DRIVER.
if(PlayerInfo[playerid][BikeL] != 1)
{
new Float:X, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
SetPlayerPos(playerid, X, Y, Z);
SendClientMessage(playerid, Rot, "Du hast keinen Motorradschein");
} -
Du scheinst ja die Fraktion des Spielers mithilfe einer Player Variable zu speichern, versuch es doch damit:
new fraktion = GetPVarInt(playerid, "Fraktion");
-
wie meinst du das
So wie ich es sag. In welchem Callback verwendest du den Ausschnitt oben?