[SAMMELTHREAD] Kleine Scripting Fragen

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
  • CreateDynamicObject(2901,0,0,-1000,0,0,0,100);

    Du solltest dir mal die Parameter angucken von CreateDynamicObject.
    Der letzte Parameter den du dort angibst ist deine WorldID nicht die Drawdistance, wie bei CreateObject.


    Du solltest das mal so probieren
    CreateDynamicObject(2901,0,0,-1000,0,0,0, .drawdistance = 100);

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Hey mal eine frage wie kann ich die Höchste ID herrausfinden ? Steht gerade aufm Schlauch :D
    z.b wenn ich dort 5 werte habe dass ich die ID vom 5 bekomme so würde ich ja den ersten Treffer bekommen wo es zustimmt

    Code
    for(new i = 0; i<sizeof(hbf[]); i++)
    		{
    		    if(hbf[playerid][i] != 0) continue;
  • Hi.


    Man sollte in verschiedene World's keine Befehle eingeben können.
    Inwiefern sollte es gehen?

    • Offizieller Beitrag

    Wurdest du mir den Quellcode schicken, bin grad am Handy

    Naja anpassen müsstest du es ja sowieso auf deine Vorstellungen aber grob würde es so funktionieren


    Code
    ocmd:moin(playerid, params[])
    {
    	new vw = GetPlayerVirtualWorld(playerid);
    	if(vw == 1 || vw > 2 && vw < 19)
    	{
    		SendClientMessage(playerid, -1, "Moin, Moin!");
    	}
    	return 1;
    }
  • Naja anpassen müsstest du es ja sowieso auf deine Vorstellungen aber grob würde es so funktionieren

    Code
    ocmd:moin(playerid, params[])
    {
    	new vw = GetPlayerVirtualWorld(playerid);
    	if(vw == 1 || vw > 2 && vw < 19)
    	{
    		SendClientMessage(playerid, -1, "Moin, Moin!");
    	}
    	return 1;
    }

    Bin wieder zuhause.


    Hab folgendes Problem:


    error 021: symbol already defined: "ocmd_ic"

  • Wie hole ich im MySQL plugin R39-5 von BlueG im mysql_tquery()-Callback die Felder eines mit diesem Callback verbundenen INSERT-Queries?
    Dass ich die ID bspw. mit cache_insert_id() hole, ist mir bekannt. Ich könnte also theoretisch einfach mit der einen neuen Query senden, der dann die Daten holt. Ebenso könnte ich dem Callback auch einfach die Daten übergeben. Beides möchte ich aber vermeiden.
    Gibt es also eine Möglichkeit, die direkt im Callback des INSERT-Queries zu laden?


    Danke im Voraus.

  • Hey mal eine frage wie kann ich die Höchste ID herrausfinden ? Steht gerade aufm Schlauch :D
    z.b wenn ich dort 5 werte habe dass ich die ID vom 5 bekomme so würde ich ja den ersten Treffer bekommen wo es zustimmt

    Code
    for(new i = 0; i<sizeof(hbf[]); i++)
    		{
    		    if(hbf[playerid][i] != 0) continue;

    Jemand eine Ideee

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Hay.


    Also. Ich will es so ungefähr haben: Spieler spawnt (Nur wenn 2 Spieler on sind) er muss ca. 10 sekunden warten und spawnt dann in eine andere virtuelle Welt da spawn anschließend Fahrzeuge.

  • Beitrag von MGPK-1323 ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • Wie hole ich im MySQL plugin R39-5 von BlueG im mysql_tquery()-Callback die Felder eines mit diesem Callback verbundenen INSERT-Queries?
    Dass ich die ID bspw. mit cache_insert_id() hole, ist mir bekannt. Ich könnte also theoretisch einfach mit der einen neuen Query senden, der dann die Daten holt. Ebenso könnte ich dem Callback auch einfach die Daten übergeben. Beides möchte ich aber vermeiden.
    Gibt es also eine Möglichkeit, die direkt im Callback des INSERT-Queries zu laden?


    Danke im Voraus.

    Also du möchtest einen Datensatz erstellen und beim Funktionsaufruf die Daten, die du übermittelt hast, direkt wieder verwenden? Funktionieren die anderen cache_* Funktionen denn nicht? Ansonsten sollte es da keine (mir bekannte) Möglichkeit geben, das abzuwickeln. Welchen Verwendungszweck soll das denn erfüllen? Eventuell kann man da einen anderen Lösungsansatz finden -> eventuell sind PVars o.ä. interessant?


    Hay.


    Also. Ich will es so ungefähr haben: Spieler spawnt (Nur wenn 2 Spieler on sind) er muss ca. 10 sekunden warten und spawnt dann in eine andere virtuelle Welt da spawn anschließend Fahrzeuge.

    Du hast eine Variable, die Spieleranzahl, die immer +1 gerechnet wird, wenn ein Spieler beitritt. Sollte diese gleich zwei sein, erstellst du einen Timer mit einem Intervall von 1000*10, welcher dann eine Funktion aufruft, der alle Spieler durchgeht und setzt deren virtuelle Welt + ersetellst Fahrzeuge. Falls nicht alle Spieler, die auf dem Server sind, in eine andere virtuelle Welt gesetzt werden soll, musst du bei der Schleife noch eine Bedingung hinzufügen.

  • Hey, mein Haussystem spinnt. Es werden 200 Häuser erstellt(MAX_HOUSE Wert). Kann mir einer erklären warum?
    @Jeffry


    ocmd:chouse(playerid, params[]){new price, interior, typ;if(!isPlayerAnAdmin(playerid,4))return SCM(playerid, ERROR_FARBE, ERROR_ADMIN);if(sscanf(params,"ddd",price,interior,typ))return SCM(playerid, -1, "Tippe: /chouse [price] [interior] [typ]");for(new i=0; i<MAX_HOUSE; i++){if(strval(hInfo[i][house_id])) continue;new Float:x, Float:y, Float:z, string[64], string2[MAX_PLAYER_NAME], query[512];GetPlayerPos(playerid, x, y, z);format(string,sizeof(string), "Zum verkauf");format(string2,sizeof(string2), "Niemand");hInfo[i][house_id] = i;hInfo[i][house_owner] = string2;hInfo[i][house_description] = string;hInfo[i][house_price] = price;hInfo[i][house_interior] = interior;hInfo[i][house_typ] = typ;hInfo[i][house_x] = x;hInfo[i][house_y] = y;hInfo[i][house_z] = z;format(query, sizeof(query), "INSERT INTO houses (id, owner, description, price, interior, posx, posy, posz, typ) VALUES ('%d', '%s', '%s', '%d', '%d', '%f', '%f', '%f', '%d')",i, hInfo[i][house_owner], hInfo[i][house_description], hInfo[i][house_price], hInfo[i][house_interior], hInfo[i][house_x], hInfo[i][house_y], hInfo[i][house_z], hInfo[i][house_typ]);mysql_tquery(handle, query);format(string,sizeof(string), "Du hast erfolgreich das Haus(ID: %d) erstellt.",i);printf("%s", query);SCM(playerid, BABYBLAU, string);}return 1;}

    Erst einmal solltest du bei einer Schleife, wenn du nur ein Haus erstellen willst (wie auch Kaliber bereits meinte), die Schleife durch ein return oder break beenden, sonst durchläuft der die komplette Schleife, auch wenn bereits ein Haus erstellt wurde (-> ergibt keinen Sinn).


    Zweitens meint er, dass deine Prämisse keinen Sinn ergibt, die du dort angibst innerhalb der Schleife. Du überprüfst lediglich, ob der Wert eine Zahl ist, sonst nichts. Fraglich ist für mich auch, was es bringt einer Variable einen Index zuzuweisen, auf welche du nur zugreifen kannst, wenn du eh den Index brauchst.


    Du kannst entweder eine Variable hinzufügen (z.B. boolean), die auf true setzen wenn ein Slot / Index belegt ist und diese als Bedingung nutzen, oder eben einen Default Wert beim Besitzer setzen und ermitteln, ob dieser gegeben ist oder nicht.

  • Beschreibung ist enthalten mit einem ==> am besten ließt du dir den post von Douq dazu auch nochmal durch.

  • Beschreibung ist enthalten mit einem ==> am besten ließt du dir den post von Douq dazu auch nochmal durch.

    Ok, hab das von Douq nicht ganz verstanden aber mal versucht umzusetzen.
    ocmd:chouse(playerid, params[])
    {
    new price, interior, typ, i;
    if(!isPlayerAnAdmin(playerid,4))return SCM(playerid, ERROR_FARBE, ERROR_ADMIN);
    if(sscanf(params,"ddd",price,interior,typ))return SCM(playerid, -1, "Tippe: /chouse [price] [interior] [typ]");
    hInfo[i][house_id] = -1;
    for(i=0; i<MAX_HOUSE; i++)
    {
    if(hInfo[i][house_id] == -1){ break; } else {
    new Float:x, Float:y, Float:z, string[64], string2[MAX_PLAYER_NAME], query[512];
    GetPlayerPos(playerid, x, y, z);
    format(string,sizeof(string), "Zum verkauf");
    format(string2,sizeof(string2), "Niemand");
    hInfo[i][house_id] = i;
    hInfo[i][house_owner] = string2;
    hInfo[i][house_description] = string;
    hInfo[i][house_price] = price;
    hInfo[i][house_interior] = interior;
    hInfo[i][house_typ] = typ;
    hInfo[i][house_x] = x;
    hInfo[i][house_y] = y;
    hInfo[i][house_z] = z;
    format(query, sizeof(query), "INSERT INTO houses (id, owner, description, price, interior, posx, posy, posz, typ) VALUES ('%d', '%s', '%s', '%d', '%d', '%f', '%f', '%f', '%d')",
    i, hInfo[i][house_owner], hInfo[i][house_description], hInfo[i][house_price], hInfo[i][house_interior], hInfo[i][house_x], hInfo[i][house_y], hInfo[i][house_z], hInfo[i][house_typ]);
    mysql_tquery(handle, query);
    format(string,sizeof(string), "Du hast erfolgreich das Haus(ID: %d) erstellt.",i);
    printf("%s", query);
    SCM(playerid, BABYBLAU, string);
    }
    }
    return 1;
    }


    Er erstellt jetzt garnichts mehr :(

  • Versuchs mal so:


    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Also du möchtest einen Datensatz erstellen und beim Funktionsaufruf die Daten, die du übermittelt hast, direkt wieder verwenden?

    Richtig

    Funktionieren die anderen cache_* Funktionen denn nicht?

    Nein, leider nicht. Die waren auch meine erste Idee.



    Gut, wenn sonst auch niemand eine andere Idee hat, muss ich wohl oder übel die drölftausend Werte als Parameter an das Callback übergeben. ^^


    Danke für die Antwort.

  • Tagchen, hätte mal eine Frage zu einer recht neueren Funktion der "r40" BlueG SQL Plugin Reihe.
    Und zwar wollte ich fragen ob die INI datei im Main Ordner liegen muss oder im Scriptfiles ordner und ob meine Konfiguration richtig ist.
    Die 2 Fragen kommen auf, da der errno -1 ausgibt und der errno meines Wissens nach auf 0 stehen muss für eine aktive Verbindung.


    -> SQL Konfigurationsdatei <-


    -> SQL Verbindung <-

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen