print zu printf
[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
RCON (In-Game): Player [[LnD]MoTrip] sent command: reloadfs updates
Filterscript 'updates.amx' unloaded.
Filterscript 'updates.amx' loaded.
Befehl aufgerufen
Erstelle ID 71
OnPlayerPickkUp aufgerufen (3 == 71) -
Du erstellst das Pickup mit der ID 71, läufst aber in das Pickup der ID 3.
Starte mal deinen Server komplett neu, und versuche es mit dem Pickup Typ 1 anstatt der 4 in CreatePickup. -
-
Du musst es nach dem Aufnehmen zerstören, mit DestroyPickup.
-
Zerstöre es so, funktionier teilweise nur eine kleine Sache:
Wenn 2 Pickups nebeneinander sind, hebt er einen auf und den anderen nicht, auch wenn ich mehrmals durchlaufe.
C
Alles anzeigenpublic OnPlayerPickUpPickup(playerid, pickupid) { printf("OnPlayerPickkUp aufgerufen (%d == %d)", pickupid, myPickup); if(pickupid == myPickup) { printf("Gebe Geld."); GivePlayerMoney(playerid,5000); SendClientMessage(playerid,0xFFFF0080,"Test"); DestroyPickup(myPickup); } return 1; } CMD:pickuptest(playerid,params[]) { print("Befehl aufgerufen"); new Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); myPickup = CreatePickup(1212, 1, x, y+2, z, -1); printf("Erstelle ID %d", myPickup); return 1; }
-
Das liegt daran, dass du es in die gleiche Variable (myPickup) schreibst, so vergisst der Server die erste ID.
Wenn du mehrere Pickups erstellen willst, dann musst du Arrays nutzen, und entsprechend definieren, wie viele Pickups erstellt werden können.So zum Beispiel:
C
Alles anzeigennew bool:myPickup[MAX_PICKUPS]; public OnPlayerPickUpPickup(playerid, pickupid) { printf("OnPlayerPickkUp aufgerufen (%d -> %d)", pickupid, myPickup[pickupid]); if(myPickup[pickupid]) { printf("Gebe Geld."); GivePlayerMoney(playerid,5000); SendClientMessage(playerid,0xFFFF0080,"Test"); DestroyPickup(pickupid); myPickup[pickupid] = false; } return 1; } CMD:pickuptest(playerid,params[]) { print("Befehl aufgerufen"); new Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); new id = CreatePickup(1212, 1, x, y+2, z, -1); myPickup[id] = true; printf("Erstelle ID %d", myPickup); return 1; }
-
Hi ich hoffe ich bin Hier richtig und man versteht mich.
Und zwar benutze ich das Include Pathfinder für eine NPC KI aber jetzt stehe ich vor einen Problem wo ich gerade nicht weiter komme.
Man fragt doch so eine Route ab oder?(Hier genaueres!)Aber wie kann ich jetzt mein NPC dort hinlaufen lassen also das er die Pfeile so abläuft?
Also ichbrauch ja die X,Y,Z Kords oder?
mfg. Mogly1 -
Pflanze ( das Objekt ) wird nicht erstellt.
Alles andere wird erfolgreich geladen. Die MySQL Log zeigt nichts ungewöhnliches an, auch die richtigen Koords.C
Alles anzeigenforward OnPlayerDrugsLoad(); public OnPlayerDrugsLoad() { new num_fields, num_rows, count = 0; cache_get_data(num_rows, num_fields, handle); if(!num_rows)return 1; for(new i=0; i < num_rows; i++) { new id = SearchFreeDrugID(); DrugInfo[id][d_Besitzer] = cache_get_field_content_int(i, "besitzer", handle); DrugInfo[id][d_Zustand] = cache_get_field_content_int(i, "zustand", handle); DrugInfo[id][d_Wasser] = cache_get_field_content_int(i, "wasser", handle); DrugInfo[id][d_Prozent] = cache_get_field_content_int(i, "prozent", handle); DrugInfo[id][d_PosX] = cache_get_field_content_float(i, "x", handle); DrugInfo[id][d_PosY] = cache_get_field_content_float(i, "y", handle); DrugInfo[id][d_PosZ] = cache_get_field_content_float(i, "z", handle); DrugInfo[id][d_Objekt] = CreateObject(826, DrugInfo[id][d_PosX], DrugInfo[id][d_PosY], DrugInfo[id][d_PosZ], 0.0, 0.0, 0.0); count ++; } printf("[INFO] %i/%i Drogenpflanze geladen.", count, sizeof(DrugInfo)); return 1; }
-
Möglicherweise hast du das Limit an Objekten erreicht (1000).
Prüfe das, andernfalls mache einen Thread auf und poste den MySQL Log, der kommt, wenn die Pflanzen geladen werden. -
Wird das klappen?
PHP
Alles anzeigenstock mysql_ChecktID(tID) { new Query[128],count,stID[128]; format(stID,sizeof(stID),"%d",tID); mysql_real_escape_string(stID, stID); format(Query, sizeof(Query), "SELECT * FROM `Teleport` WHERE `TeleportID` = '%s'", stID); mysql_query(Query); mysql_store_result(); count = mysql_num_rows(); mysql_free_result(); return count; } //Befehl mysql_ChecktID(tID) return SendClientMessage(playerid,ROT,"Diese TeleportID existiert nicht!");
-
-
wird der Dann nicht nur die Fehlermeldung senden wenn ich mich versuche zur Id 0 zu teleportieren? Oder auch z.B wenn die Id 100 nicht existiert?
-
Die Abfrage, ob die Funktion 0 zurück gibt, heißt, dass wenn 0 Zeilen im SELECT sind, dann existiert der Teleport nicht, das gilt für alle IDs.
-
-
-
-
Ups, ja hat sich beim kopieren mit eingeschlichen.
Wenn du den Ort jedoch in einer extra Variablen speichern möchtest, muss du diese als String deklarieren und dann mit format füllen.
-
Yo, arbeite nun etwas mit Textdraws und habe eine Frage:
Ich habe ein Befehl erstellt womit ich sie erstelle und wieder entferne, klappt gut doch das war nur für Testzwecke erstellt. Jetzt möchte ich das wenn man auf dem Textdraw klickt was wie ein X aussieht, die Textdraws verschwinden. Dafür habe ich folgende Befehle:
Befehl um die Textdraws anzuzeigen und zu entfernen (Funktioniert perfekt)
C
Alles anzeigenMD:lotto(playerid,params[]) { if (IsPlayerInRangeOfPoint(playerid, 2.0, 1286.7998,-1329.1625,13.5549)) { if(Showing[playerid] == 1) { Showing[playerid] = 0; TextDrawHideForPlayer(playerid, Textdraw0); TextDrawHideForPlayer(playerid, Textdraw1); TextDrawHideForPlayer(playerid, Textdraw2); TextDrawHideForPlayer(playerid, Textdraw3); TextDrawHideForPlayer(playerid, Textdraw4); TextDrawHideForPlayer(playerid, Textdraw5); TextDrawHideForPlayer(playerid, Textdraw6); } else { Showing[playerid] = 1; TextDrawShowForPlayer(playerid, Textdraw0); TextDrawShowForPlayer(playerid, Textdraw1); TextDrawShowForPlayer(playerid, Textdraw2); TextDrawShowForPlayer(playerid, Textdraw3); TextDrawShowForPlayer(playerid, Textdraw4); TextDrawShowForPlayer(playerid, Textdraw5); TextDrawShowForPlayer(playerid, Textdraw6); } } return 1; }
Und meine 2 anderen Befehle welche nicht wie gewollt funktionieren
Hier der Public
C
Alles anzeigenpublic OnPlayerClickTextDraw(playerid, Text:clickedid) { if(clickedid ==Textdraw1) { SendClientMessage(playerid, 0xFFFFFFAA, "Textdraw closed."); Showing[playerid] = 0; TextDrawShowForPlayer(playerid, Textdraw0); TextDrawShowForPlayer(playerid, Textdraw1); TextDrawShowForPlayer(playerid, Textdraw2); TextDrawShowForPlayer(playerid, Textdraw3); TextDrawShowForPlayer(playerid, Textdraw4); TextDrawShowForPlayer(playerid, Textdraw5); TextDrawShowForPlayer(playerid, Textdraw6); CancelSelectTextDraw(playerid); } return 1; }
Und der Befehl um den Cursor anzuzeigen (funktioniert)
CCMD:zeiger(playerid,params[]) { SelectTextDraw(playerid, 0x00FF00FF); // Highlight green when hovering over SendClientMessage(playerid, 0xFFFFFFAA, "Mauszeiger ist nun an"); return 1; }
Mein Problem: Die Textdraws verschwinden nicht wenn ich auf das Kreuz klicke..
-
Du hidest auch nirgendswo die TextDraws.
Du musst wenn schon auch im public OnPlayerClickTextDraw die Textdraws hiden.