für Hamburg, ya
Beiträge von Douq
-
-
Daran liegt es nicht, da vehicleid nicht -400 sein kann.
Hab ich auch gar nicht behauptet - ich meine folgendes:
Er deklariert in Zeile 1 vehicleid und modelid und initialisiert sie auch mit den richtigen Werten. In Zeile 5 jedoch überschreibt er modelid mit dem Wert aus AutoSkin[vehicleid], was eigentlich gar nicht nötig ist, da er den Wert bereits durch die Initialisierung hat. Gehen wir nun davon aus, und so scheint es auch, dass AutoSkin[vehicleid] 0 entspricht. 0 - 400 ergibt -400 -> dadurch wird der Array gesprengt. Das ist für mich deutlich plausibler und logischer, oder übersehe ich da etwas?
-
Oder einfach Zeile 5 von deinem Code entfernen, der wahrscheinlich zu dem Fehler führt.
-
Du verwendest die Funktion GetPVarString() falsch, da die Funktion die Länge des Strings zurück gibt und nicht deren Inhalt. GetPVarString() ist darauf ausgelegt, eine Variable als Referenz zur Speicherung des Inhaltes anzugeben, mit welcher du dann in diesem Fall arbeiten musst.
Die Parameter der Funktion sind soweit richtig, du musst lediglich die Funktion vor format() positionieren und die Variable str als 4 Parameter bei format() angeben.
-
format(string, sizeof(string), "Im Jackpot befinden sich %d$.\nHeute ist die Gewinnernummer %d.", Others[Lotto], lottonumber);SendClientMessageToAll(COLOR_WHITE, string);
Hey,
Ich hab versucht \n ~n~ das die Heute ist die Gewinnernummer %sd. in die Nexte zeile angezeigt wird warum nimmt er das nicht?
Musst du wohl oder übel zwei Nachrichten verschicken, die Zeichen funktionieren nämlich bei SendClientMessageToAll() nicht.
-
Sry, bin zu inkompetent dafür xD
Hab gegooglt wie ich das mit format mache, aber hab nur den typen gefunden der selber mal das Problem hatte: Input DialogHilfe
Deine Verlinkung führt auf dieses Thema zurück :D.
Es gibt mehrere Varianten, um den Inhalt zu übergeben, Beispiel:
Empfehle dir in diesem Fall diese Variante, sofern GutscheinCreate vorher leer ist. Solltest du GutScheinCreate nie leeren und der alte Wert dort noch drinnen stehen, kannst du entweder den Inhalt per strdel() löschen, oder direkt per format() den Wert setzen:
-
In dem du den Alpha-Wert bei der Farbe auf 00 änderst -> 0xFF634700.
-
Du hast miny mit maxy verwechselt, denn -1890.0 > -2020.3 -> tausch die beiden Zahlen miteinander, dann geht es.
-
Wahrscheinlich hast du dann minx miny maxx und maxy vertauscht. Bei welchen Zonen funktioniert das denn nicht?
-
Ja, per zwei globale Variablen, Beispiel wäre:
Dann innerhalb des Schleifenrumpfs:
Vor dem Schleifenrumpf setzt du dann DialogTempIndex = 0.
Dann kannst du innerhalb OnDialogResponse auf die ID perzugreifen. Die 50 kannst du beliebig ändern, je nach dem wie viele rows du innerhalb deines Dialogs anzeigen wirst.
-
Mit strlen() lässt du dir die string-Länge zurück geben. Daher zeigt er dir bisher immer an, wie viele Zeichen du angegeben hast, was ja nicht dein Wunsch ist :D. Du kannst ganz einfach inputtext verwenden, wenn du dir dein Text ausgeben lassen möchtest:
-
Du speicherst ja in Truckkwaren[playerid] deine Warenanzahl, diese multiplizierst du einfach mit einem Wert und gibst diesen Wert dann dem Spieler. Danach setzt du die Variable (Truckkwaren) wieder auf 0, damit er die nicht wieder verkaufen kann.
-
-
Code
Alles anzeigenCMD:materials(playerid,params[]) { new string[128], befehl[25]; printf("cmd_materials wird aufgerufen."); if(sscanf(params, "s[30]",befehl)) return SendClientMessage(playerid, COLOR_GREY, "Benutze /materials [get/deliver]"); printf("Inhalt von befehl: %s (string compare: %d)", befehl, strcmp(befehl, "get", true)); if(strcmp(befehl, "get", true) == 0) { printf("strcmp -> befehl => 'get'"); new menge; new Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); printf("%.3f, %.3f, %.3f (Range of 3.0: %d)", x,y,z, IsPlayerInRangeOfPoint(playerid, 3.0, 597.0846,-1248.3699,18.2641)); if(!IsPlayerInRangeOfPoint(playerid, 3.0, 597.0846,-1248.3699,18.2641)) return SendClientMessage(playerid, COLOR_GREY, "Du bist nicht am Materialpunkt."); //if(sscanf(params, "i", menge))return SendClientMessage(playerid, COLOR_GREY, "Benutze /getpaket [1-15]"); if(menge<1||menge>15)return SendClientMessage(playerid, COLOR_GREY, "Wähle eine Menge zwischen 1 bis 15 aus!"); if((pPacketsWD[playerid]+menge) > 15)return SendClientMessage(playerid, COLOR_GREY, "Soviele Pakete kannst du nicht mitnehmen."); new preis = (menge*200); if(GetMoney(playerid) < preis)return SendClientMessage(playerid, COLOR_GREY, ERROR_MONEY); pPacketsWD[playerid] += menge; GiveMoney(playerid, -preis); format(string, sizeof(string), "Du hast %d Pakete für $%d gekauft. Bringe diese nun schnell nach San Fierro!", menge, preis); SendClientMessage(playerid, COLOR_LIGHTBLUE, string); SetPlayerCheckpointEx(playerid, -2109.5037,-0.4467,34.8972, 4.0, CP_GETPAKET_WD, INVALID_CHECKPOINT_TYPE); } else if(strcmp(befehl, "deliver", true) == 0) { if(IsPlayerInRangeOfPoint(playerid, 3.0, -2109.5037,-0.4467,34.8972)) { if(pPacketsWD[playerid] == 0)return SendClientMessage(playerid, COLOR_GREY, "Du hast keine Pakete zum abgeben."); new mats = (pPacketsWD[playerid]*50); format(string, sizeof(string), "Du hast %d Pakete abgegeben und %d Materialien dafür erhalten.", pPacketsWD[playerid], mats); SendClientMessage(playerid, COLOR_LIGHTBLUE, string); pPacketsWD[playerid] = 0; Spieler[playerid][pEisen] += mats; return 1; } } else { SendClientMessage(playerid, -1, "Du hast zwei Optionen. Entweder get oder deliver."); } return 1; }
Führ bitte einmal diesen Code aus und gib uns die Daten, die im serverlog stehen.
-
Habe es mal ausgetestet und bei mir funktioniert das einwandfrei. Da muss man wohl mal rum testen, wir verlagern mal das Gespräch auf privater Ebene (PN) um den Fehler zu finden und posten dann hier die Lösung.
-
Delete3DTextLabel ist sowieso komplett falsch, weil du ein Label über die streamer-Funktion erstellst, musst du es auch mit dieser zerstören. Die Funktion lautet DestroyDynamic3DTextLabel.
-
Code
Alles anzeigenpublic OnPlayerCommandText(playerid, cmdtext[]) { if (!strcmp ("/restart",cmdtext,true)) { SendRconCommand("gmx"); SendClientMessage(playerid,COLOR_RED,"Server wird neugestartet"); return 1; } if (!strcmp("/test",cmdtext,true)) { SendClientMessage(playerid,COLOR_RED,"test"); return 1; } if (strcmp(cmdtext, "/Kungfu", true) == 0) { SetPlayerFightingStyle (playerid, FIGHT_STYLE_BOXING); SendClientMessage(playerid, 0xFFFFFFAA, "Du hast deinen Kampfstyle geändert. "); SetPlayerHealth(playerid, 0); return 1; } if (strcmp (cmdtext, "/Minigun", true) ==0) GivePlayerWeapon(playerid, 38, 999); return 1; } if(strcmp(cmd, "/givemoney", true) == 0) (ZEILE 123) { GivePlayerMoney(playerid, 50000); return 1; (ZEILE 126) }
Hey,
habe ein Problem mit dem "Givemoney" Befehl und zwar kommt wenn ich diesen compile dieser Error.
(123) : error 010: invalid function or declaration
(126) : error 010: invalid function or declarationEs wäre nett, wenn ihr diesen Code editieren könntet & mir den kompletten Public Befehl zurückschicken könntet (so ist es einfacher einzufügen und es entstehen keine weiteren Probleme)
mfg
Füg zwischen Zeile 21 und 22 eine { hinzu.
-
-
Umgangssprachlich wirds gerne ID-Verschiebung genannt. Du musst das Label zerstören, wenn du auch das Fahrzeug zerstörst, weil Fahrzeug-IDs wieder genutzt werden und somit das Label am neuen Fahrzeug automatisch attached wird.
-
Wenn es funktioniert wenn du es manuell setzt, scheint wohl bei der Übermittlung der Daten zur Datenbank ein Fehler aufzutreten. Zeig mal unter welchen Bedingungen du die Fahrzeug-Daten speicherst und wie du es tust.