[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
  • What`s wrong?

    format(str, sizeof(str), "Zielperson: %s [%d] | Kopfgeld: $%s", PlayerInfo[pID][pName], i, GetPVarInt(pID, "KG_Betrag"));
    if(strlen(str) < 0) SendClientMessage(playerid, -1, "Momentan sind keine Aufträge da.");
    else ShowPlayerDialog(i, DIALOG_KOPFGELD, DIALOG_STYLE_MSGBOX, "Hitmen Aufträge", str, "Schließen", "");


    Wenn der String 0 Zeichen hat wird mir die ClientMessage nicht gesendet.

  • Wenn der String 0 Zeichen hat wird mir die ClientMessage nicht gesendet.


    Du prüfst ja auch ob der String weniger als 0 Zeichen hat.


    Der String kann so aber auch nicht 0 Zeichen haben.
    Du solltest eher die Anzahl der Aufträge zwischenspeichern und das prüfen.

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

    Margarete Stokowski

  • Kann man diesen Code irgendwie kleiner machen? Bzw. Schlauer?


    new sql1[150],sql2[150],sql3[150],sql4[150],sql5[150],sql6[150],sql7[150],
    sql8[150],sql9[150],sql10[150],sql11[150],sql12[150],sql13[150],sql14[150],sql15[150],
    sql16[150],sql17[150],sql18[150],sql19[150],sql20[150],sql21[150],sql22[150],sql23[150],
    sql24[150],sql25[150],sql26[150],sql27[150],sql28[150],sql29[150],sql30[150];


    format(sql1, sizeof(sql1), "UPDATE hauser SET Mieter1 = '-' WHERE ID = '%d'", HausIDErstellen);
    mysql_query(sql1);


    format(sql2, sizeof(sql2), "UPDATE hauser SET Mieter2 = '-' WHERE ID = '%d'", HausIDErstellen);
    mysql_query(sql2);


    format(sql3, sizeof(sql3), "UPDATE hauser SET Mieter3 = '-' WHERE ID = '%d'", HausIDErstellen);
    mysql_query(sql3);


    format(sql4, sizeof(sql4), "UPDATE hauser SET Mieter4 = '-' WHERE ID = '%d'", HausIDErstellen);
    mysql_query(sql4);


    format(sql5, sizeof(sql5), "UPDATE hauser SET Mieter5 = '-' WHERE ID = '%d'", HausIDErstellen);
    mysql_query(sql5);


    format(sql6, sizeof(sql6), "UPDATE hauser SET Mieter6 = '-' WHERE ID = '%d'", HausIDErstellen);
    mysql_query(sql6);


    format(sql7, sizeof(sql7), "UPDATE hauser SET Mieter7 = '-' WHERE ID = '%d'", HausIDErstellen);
    mysql_query(sql7);


    format(sql8, sizeof(sql8), "UPDATE hauser SET Mieter8 = '-' WHERE ID = '%d'", HausIDErstellen);
    mysql_query(sql8);


    format(sql9, sizeof(sql9), "UPDATE hauser SET Mieter9 = '-' WHERE ID = '%d'", HausIDErstellen);
    mysql_query(sql9);


    format(sql10, sizeof(sql10), "UPDATE hauser SET Mieter10 = '-' WHERE ID = '%d'", HausIDErstellen);
    mysql_query(sql10);


    format(sql11, sizeof(sql11), "UPDATE hauser SET Mieter11 = '-' WHERE ID = '%d'", HausIDErstellen);
    mysql_query(sql11);


    format(sql12, sizeof(sql12), "UPDATE hauser SET Mieter12 = '-' WHERE ID = '%d'", HausIDErstellen);
    mysql_query(sql12);


    format(sql13, sizeof(sql13), "UPDATE hauser SET Mieter13 = '-' WHERE ID = '%d'", HausIDErstellen);
    mysql_query(sql13);


    format(sql14, sizeof(sql14), "UPDATE hauser SET Mieter14 = '-' WHERE ID = '%d'", HausIDErstellen);
    mysql_query(sql14);


    format(sql15, sizeof(sql15), "UPDATE hauser SET Mieter15 = '-' WHERE ID = '%d'", HausIDErstellen);
    mysql_query(sql15);


    format(sql16, sizeof(sql16), "UPDATE hauser SET Mieter16 = '-' WHERE ID = '%d'", HausIDErstellen);
    mysql_query(sql16);


    format(sql17, sizeof(sql17), "UPDATE hauser SET Mieter17 = '-' WHERE ID = '%d'", HausIDErstellen);
    mysql_query(sql17);


    format(sql18, sizeof(sql18), "UPDATE hauser SET Mieter18 = '-' WHERE ID = '%d'", HausIDErstellen);
    mysql_query(sql18);


    format(sql19, sizeof(sql19), "UPDATE hauser SET Mieter19 = '-' WHERE ID = '%d'", HausIDErstellen);
    mysql_query(sql19);


    format(sql20, sizeof(sql20), "UPDATE hauser SET Mieter20 = '-' WHERE ID = '%d'", HausIDErstellen);
    mysql_query(sql20);


    format(sql21, sizeof(sql21), "UPDATE hauser SET Mieter21 = '-' WHERE ID = '%d'", HausIDErstellen);
    mysql_query(sql21);


    format(sql22, sizeof(sql22), "UPDATE hauser SET Mieter22 = '-' WHERE ID = '%d'", HausIDErstellen);
    mysql_query(sql22);


    format(sql23, sizeof(sql23), "UPDATE hauser SET Mieter23 = '-' WHERE ID = '%d'", HausIDErstellen);
    mysql_query(sql23);


    format(sql24, sizeof(sql24), "UPDATE hauser SET Mieter24 = '-' WHERE ID = '%d'", HausIDErstellen);
    mysql_query(sql24);


    format(sql25, sizeof(sql25), "UPDATE hauser SET Mieter25 = '-' WHERE ID = '%d'", HausIDErstellen);
    mysql_query(sql25);


    format(sql26, sizeof(sql26), "UPDATE hauser SET Mieter26 = '-' WHERE ID = '%d'", HausIDErstellen);
    mysql_query(sql26);


    format(sql27, sizeof(sql27), "UPDATE hauser SET Mieter27 = '-' WHERE ID = '%d'", HausIDErstellen);
    mysql_query(sql27);


    format(sql28, sizeof(sql28), "UPDATE hauser SET Mieter28 = '-' WHERE ID = '%d'", HausIDErstellen);
    mysql_query(sql28);


    format(sql29, sizeof(sql29), "UPDATE hauser SET Mieter29 = '-' WHERE ID = '%d'", HausIDErstellen);
    mysql_query(sql29);


    format(sql30, sizeof(sql30), "UPDATE hauser SET Mieter30 = '-' WHERE ID = '%d'", HausIDErstellen);
    mysql_query(sql30);

    Mit freundlichen Grüßen
    [KoSoVa] :klugs:



  • kommen diese Fehler:


    PHP
    18:24:43] CMySQLHandler::Query(UPDATE hauser SET Mieter1 = '-',  Mieter2 = '-',  Mieter3 = '-',  Mieter4 = '-',  Mieter5 = '-',  Mieter6 = '-',  Mieter7 = '-',  Mieter8 = '-',  Mieter9 = '-',  Mieter10 = '-',  Mieter11 = '-',  Mieter12 = '-',  Mieter13 = '-',  Mieter14 = '-',  Mieter15 = '-',  Mieter16 = '-',  Mieter17 = '-',  Mieter18 = '-',  Mieter19 = '-',  Mieter20 = '-',  Mieter21 = '-',  Mieter22 = '-',  Mieter23 = '-',  Mieter24 = '-',  Mieter25 = '-',  Mieter26 = '-',  Mieter27 = '-',  Mieter28 = '-',  Mieter29 = '-',  Mieter30 ) - An error has occured. (Error ID: 1064, You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1)
    
    
    [18:24:43] OnQueryError() - Called.

    Mit freundlichen Grüßen
    [KoSoVa] :klugs:

  • Jeffry:


    Kleines Problem mit Objecte.
    Ich lasse ja maps mit einem Filterscript laden, ich besitze aber nur .amx Dateien.
    So, und irgendwie muss es die Möglichkeit ja geben die Objecte zu entfernen, ich besitze 6 Modes wo Objecte sind und ich kann nicht einfach alle Objecte entfernen lassen.


    Habe es mal damit probiert aber klappt nicht so ganz:


    Bevor ich das Filterscript laden lasse:


    firstobjDM = CountDynamicObjects() + CountObjects();


    Nach dem ich das Filterscript geladen habe:


    maxobjectDM = firstobjDM + CountDynamicObjects() + CountObjects();


    So ähnlich ist es bei den anderen auch, nur mit anderen Variablen.


    Und beim Unloaden einer map:


    i = maxobjectDM;
    firstobj = firstobjDM;


    while (firstobj < i)
    {


    DestroyDynamicObject(firstobj);
    firstobj++;
    index++;
    }


    firstobj = firstobjDM;


    while (firstobj < i)
    {


    DestroyObject(firstobj);
    firstobj++;
    index++;
    }

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Pascal.: Dein Mapper wird wahrscheinlich die Objekte in die Filterscripte laden, oder täusch ich mich da ?


    Wenn ja wäre es das einfachste, wenn er 2 public Funktionen erstellt.


    die einer heißt dann bspw. CreateDMObjects und die andere DestroyDMObjects, was diese tun soll ist klar ;D
    Diese rufst du dann über CallRemoteFunction auf und kannst diese dann so ausführen lassen.


    Das ist wesentlich Effektiver und einfacher als das was du da vorhast.
    Ich sehe es schon kommen, das bei deiner Variante in einigen Maps Objekte fehlen, weil sie versehntlich gelöscht wurden, aufgrund der ID.


    und die Variante von Jeffry find ich persönlich doch etwas - eh wie soll ich sagen eigenartig ?
    Damit wird man sicherlich nicht alle Objekte entfernen können :D

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

    Margarete Stokowski

  • Somit könnte man alle Objekte entfernen lassen? (Die zb im Umkreis von 1000 Meter sind)
    Da würde aber ein kleines Problem sein, was ist wenn nicht alle Objekte entfernt werden.
    Eine Möglichkeit gibt es noch, da die Maps in verschiedene Welten sind könnte man Theoritisch alle Objekte die in der Map Welt sind entfernen lassen oder?


    //EDIT:
    @BlackAce:
    Ich habe kein Mapper, dass sind fast alles Racemaps (Dm Racing).
    Die habe ich selber nur in der .amx bekommen.

  • Wenn du jemanden hast, der die pwn Datei hat, dann wäre die Methode die BlackAce vorgeschlagen hat am sinnvollsten.


    Wenn nicht, dann kannst du die Objekte auch nicht in Welten setzen, dann musst du es mit entsprechenden Flächen machen, in denen Umkreisen du die Objekte eben entfernst, wie erklärt.
    Je nach dem was auf dich zutrifft.


    EDIT:
    Dann geht es nur über den Umkreis, oder eben Flächen, vom Prinzip das gleiche, ein Umkreis ist ja auch eine Fläche.

  • Nene, die Objekte sind schon in andere Welten.
    Das ist alles so in den Maps mit drin, das einzige was nicht gemacht wurden ist, dass die Objekte gelöscht werden.
    So meine Frage war, ob ich nicht abfragen kann ob das Objekt in der welt "x" ist und dann löschen?

  • Ja, das würde dann gehen.
    Mit
    Streamer_GetIntData
    Siehe hier: http://forum.sa-mp.com/showthread.php?t=102865


    Ah, alles Klar.
    Gucke ich mir dann gleich mal an.
    Bedanke mich trotzdem schon mal. :)


    //EDIT:


    Jeffry:
    Ich hatte es jetzt mal Probiert, klappt leider nicht so ganz.
    Frage nebenbei, wie sieht es dann mit den Normalen Objekten aus, es kann ja sein das auch manche Objekte mit CreateObject erstellt wurden sind.


    Mein Code:
    for (new id = 0; id < 89; id++) { // Das sind die worlds in dennen die Objekte gestreamt werden (0-89)
    Streamer_GetIntData(STREAMER_TYPE_OBJECT, id, E_STREAMER_WORLD_ID);


    while (i < CountDynamicObjects()) {


    if (IsValidDynamicObject(i)) {
    DestroyDynamicObject(i);
    index++;
    }
    }
    }

    2 Mal editiert, zuletzt von Pascal. ()

  • Warum wird der Textdraw: PlayerTextDrawShow(i,CTFSystem2[i][11]); //Pkt Gesamt (Gegner Punkte) etc. nicht angezeigt


    for(new ctf=0;ctf<MAX_CTF_GEBIETE;ctf++)
    {
    new ctfstring[250],ctfstring2[250],string2[25];
    if(IsPlayerInRangeOfPoint(playerid,3.0,CTFInfo[ctf][flPosX2],CTFInfo[ctf][flPosY2],CTFInfo[ctf][flPosZ2]))
    {
    if(Spieler[playerid][pFraktion] == 0) return SendClientMessage(playerid,ROT,"Du bist Zivilist, daher ist es nicht möglich das System zu starten!");
    if(CTFInfo[ctf][ctfgestartet] == 1) return SendClientMessage(playerid,-1,"Dieses Gebiet wird bereits angegriffen");
    if(IstSpielerInFraktion(playerid,7) || IstSpielerInFraktion(playerid,8) || IstSpielerInFraktion(playerid,9) || IstSpielerInFraktion(playerid,10) || IstSpielerInFraktion(playerid,11) || IstSpielerInFraktion(playerid,12))
    {
    if(CTFInfo[ctf][gwzeit] > gettime()) return SendClientMessage(playerid,ROT,"Das Gebiet kann noch nicht bekämpft werden!");
    else if(CTFInfo[ctf][ctffid] == Spieler[playerid][pFraktion]) return SendClientMessage(playerid,ROT,"Das Gebiet gehört bereits euch!");


    format(string,sizeof(string),""#HTML_RED"Gebiet: "#HTML_WHITE" Euer Gebiet (%s) wird von der Fraktion %s angegriffen.",CTFInfo[ctf][gebietsname],Fraktionsname(playerid));
    FraktionsChat(CTFInfo[ctf][ctffid],WEISS,string);


    format(string,sizeof(string),""#HTML_LOGIN"Gebiet: "#HTML_WHITE"Ihr habt das Gebiet %s angegriffen! Macht euch bereit!",CTFInfo[ctf][gebietsname]);
    FraktionsChat(Spieler[playerid][pFraktion],WEISS,string);


    Delete3DTextLabel(CTFSystem3DText[ctf]);
    Delete3DTextLabel(CTFSystem3DText2[ctf]);


    format(ctfstring2,sizeof(ctfstring2),""#HTML_RED"Flagge der Angreifer\n"#HTML_WHITE"Angreifer: %s",Fraktionsname(playerid));
    CTFSystem3DText2[ctf] = Create3DTextLabel(ctfstring2,WEISS,CTFInfo[ctf][flPosX2],CTFInfo[ctf][flPosY2],CTFInfo[ctf][flPosZ2]+1,15.0,0,0);


    format(ctfstring,sizeof(ctfstring),""#HTML_GREEN"Flagge der Verteidiger\n"#HTML_WHITE"Verteidiger: %s",FraktionsCTFName(CTFInfo[ctf][ctffid]));
    CTFSystem3DText[ctf] = Create3DTextLabel(ctfstring,WEISS,CTFInfo[ctf][flPosX1],CTFInfo[ctf][flPosY1],CTFInfo[ctf][flPosZ1]+1,15.0,0,0);


    CTFInfo[ctf][angreifer] = Spieler[playerid][pFraktion];
    CTFInfo[ctf][flaggeverteidiger] = 0;
    CTFInfo[ctf][flaggeangreifer] = 0;
    CTFInfo[ctf][kampfzeit] = 0;
    CTFInfo[ctf][angreiferflaggeerobert] = 0;
    CTFInfo[ctf][verteidigerflaggeerobert] = 0;
    CTFInfo[ctf][angreiferpunkte] = 0;
    CTFInfo[ctf][verteidigerpunkte] = 0;
    CTFInfo[ctf][ctfgestartet] = 1;
    CTFInfo[ctf][flaggeangreiferliegen] = 0;
    CTFInfo[ctf][flaggeverteidigerliegen] = 0;


    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i) && !IsPlayerNPC(i))
    {
    if(IstSpielerInFraktion(i,CTFInfo[ctf][angreifer]) && Spieler[i][pFraktion] != 0)
    {
    PlayerTextDrawShow(i,CTFSystem2[i][0]); //box
    PlayerTextDrawShow(i,CTFSystem2[i][1]); //Capture The Flag Text
    PlayerTextDrawShow(i,CTFSystem2[i][2]); // Strich
    PlayerTextDrawShow(i,CTFSystem2[i][6]); //Eure Punkte
    PlayerTextDrawShow(i,CTFSystem2[i][7]); //Gegner Punkte
    PlayerTextDrawShow(i,CTFSystem2[i][10]); // Pkt Gesamt (Eure Punkte)
    PlayerTextDrawShow(i,CTFSystem2[i][11]); //Pkt Gesamt (Gegner Punkte)


    PlayerTextDrawShow(i,CTFSystem2[i][12]); //Pkt Anzahl
    PlayerTextDrawShow(i,CTFSystem2[i][13]); //Gegner Punkte


    format(string2,sizeof(string2),"%i",CTFInfo[ctf][verteidigerpunkte]);
    PlayerTextDrawSetString(i,CTFSystem2[i][13],string2);


    format(string2,sizeof(string2),"%i",CTFInfo[ctf][angreiferpunkte]);
    PlayerTextDrawSetString(i,CTFSystem2[i][12],string2);


    GangZoneFlashForPlayer(i,CTFInfo[ctf][CTFGangZone],CTFZoneFarbe(CTFInfo[ctf][angreifer]));
    }
    else if(IstSpielerInFraktion(i,CTFInfo[ctf][ctffid]) && Spieler[i][pFraktion] != 0) //Verteidiger
    {
    PlayerTextDrawShow(i,CTFSystem[i][0]); //box
    PlayerTextDrawShow(i,CTFSystem[i][1]); //Capture The Flag Text
    PlayerTextDrawShow(i,CTFSystem[i][2]); // Strich
    PlayerTextDrawShow(i,CTFSystem[i][6]); //Eure Punkte
    PlayerTextDrawShow(i,CTFSystem[i][7]); //Gegner Punkte
    PlayerTextDrawShow(i,CTFSystem[i][10]); // Pkt Gesamt (Eure Punkte)
    PlayerTextDrawShow(i,CTFSystem[i][11]); //Pkt Gesamt (Gegner Punkte)


    PlayerTextDrawShow(i,CTFSystem[i][12]); //Pkt Anzahl
    PlayerTextDrawShow(i,CTFSystem[i][13]); //Gegner Punkte


    format(string2,sizeof(string2),"%i",CTFInfo[ctf][angreiferpunkte]);
    PlayerTextDrawSetString(i,CTFSystem[i][13],string2);


    format(string2,sizeof(string2),"%i",CTFInfo[ctf][verteidigerpunkte]);
    PlayerTextDrawSetString(i,CTFSystem[i][12],string2);


    GangZoneFlashForPlayer(i,CTFInfo[ctf][CTFGangZone],CTFZoneFarbe(CTFInfo[ctf][angreifer]));
    }
    }
    }
    return true;
    }
    else return SendClientMessage(playerid,ROT,"Du bist nicht in der richtigen Fraktion dafür!");
    }
    }

  • Ich hatte es jetzt mal Probiert, klappt leider nicht so ganz.


    for (new id = 0, j = Streamer_CountItems(STREAMER_TYPE_OBJECT); id < j; id++)
    {
    if(IsValidDynamicObject(id) && Streamer_GetIntData(STREAMER_TYPE_OBJECT, id, E_STREAMER_WORLD_ID) <= 89)
    {
    DestroyDynamicObject(id);
    }
    }
    Versuche es so.


    Heav3n: Das ist schon an der Code Größe keine kleine Frage mehr. Mache bitte einen Thread auf.

  • Bei manchen Maps sind ja auch Objekte die mit "CreateObject" erstellt wurden sind,
    gibt es auch für die eine Möglichkeit?


    //EDIT:
    Klappt leider auch nicht, habe nebenbei mal ein Debug gemacht:


    index sollte addiert werden sobald ein Object entfernt wird, aber wurde nichts entfernt.


    Code
    [DEBUG]: Es wurden 0 DM Objekte entfernt.

    Einmal editiert, zuletzt von Pascal. ()

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