[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
  • Das hier:


    Spoiler anzeigen
    stock GiveNummer(playerid)
    {
    new nummer = 100000 + random ( 899999 ) ;
    if(IsValidNumber(nummer))
    {
    AddNummer(nummer,playerid);
    SetPVarInt(playerid,"Nummer",nummer);
    return 1;
    }
    else return GiveNummer(playerid);
    }
    stock IsValidNumber(nummer1)
    {
    new nummer[5];
    format(nummer,5,"%d",nummer1);
    new File: file = fopen("Nummern.txt", io_read);
    if (file)
    {
    new nrr[5];
    while (fread(file, nrr))
    {
    StripNewLineX(nrr);
    if (!strcmp(nrr, nummer, true, strlen(nummer)))
    {
    fclose(file);
    return false;
    }
    }
    }
    fclose(file);
    return true;
    }
    stock StripNewLineX(string[])
    {
    new len = strlen(string);
    if (string[0]==0) return ;
    if ((string[len - 1] == '\n') || (string[len - 1] == '\r')) {
    string[len - 1] = 0;
    if (string[0]==0) return ;
    if ((string[len - 2] == '\n') || (string[len - 2] == '\r')) string[len - 2] = 0;
    }
    }
    stock AddNummer(nummer,playerid)
    {
    new File[128];
    new nummer1[10];
    format(nummer1,10,"%d",nummer);
    format(File,sizeof(File),"/Nummern.txt");
    dini_Set(File,nummer1,SpielerName(playerid));
    return 1;
    }

    Spoiler anzeigen
    //======================CPORT==========================

    Spoiler anzeigen
    ocmd:cport(playerid,params[])
    {
    new id,Float:Pos[4],vw,in;
    if(sscanf(params,"d",id)) return SCM(playerid,hellrot,"Benutze /cport (Portcode)");
    if(!isPlayerAnAdmin(playerid,5)) return SCM(playerid,hellrot,"Du bist kein RCON-Admin!");
    if(PortCodeExistiert(id)) return SCM(playerid,hellrot,"* Code existiert bereits, bitte gebe einen anderen ein.");

    Spoiler anzeigen
    new pfad[128];
    format(pfad,50,"/Teleports/%d.txt",id);

    Spoiler anzeigen
    GetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]);
    GetPlayerFacingAngle(playerid,Pos[3]);
    vw = GetPlayerVirtualWorld(playerid);
    in = GetPlayerInterior(playerid);
    CreateTeleportCode(id,Pos[0],Pos[1],Pos[2],Pos[3],in,vw);
    format(pfad,128,"* INFO: Der Teleportcode %d wurde erstellt, du kannst ihn nun bei /gotoport verwenden.",id);
    SCM(playerid,neongelb,pfad);
    return 1;
    }

    Spoiler anzeigen
    ocmd:gotoport(playerid,params[])
    {
    new code;
    if(sscanf(params,"d",code)) return SCM(playerid,hellrot,"Benutze /gotoport (Portcode)");
    if(!isPlayerAnAdmin(playerid,5)) return SCM(playerid,hellrot,"Du bist kein RCON-Admin!");
    if(!PortCodeExistiert(code)) return SCM(playerid,hellrot,"* Portcode existiert nicht.");

    Spoiler anzeigen
    new pfad[64];
    format(pfad,50,"/Teleports/%d.txt",code);
    SetPlayerPos(playerid,dini_Float(pfad,"X"),dini_Float(pfad,"Y"),dini_Float(pfad,"Z"));
    SetPlayerInterior(playerid,dini_Int(pfad,"Interior"));
    SetPlayerVirtualWorld(playerid,dini_Int(pfad,"World"));
    return 1;
    }

    Spoiler anzeigen
    stock CreateTeleportCode(code,Float:x,Float:y,Float:z,Float:angle,interior,world)
    {
    new pfad[64];
    format(pfad,50,"/Teleports/%s.txt",code);
    if(!dini_Exists(pfad))
    {
    dini_Create(pfad);
    dini_FloatSet(pfad,"X",x);
    dini_FloatSet(pfad,"Y",y);
    dini_FloatSet(pfad,"Z",z);
    dini_FloatSet(pfad,"Angle",angle);
    dini_IntSet(pfad,"Interior",interior);
    dini_IntSet(pfad,"World",world);
    }
    return printf("[Port] Teleportcode %s wurde erstellt!",code);
    }

    Spoiler anzeigen
    stock PortCodeExistiert(code)
    {
    new pfad[64];
    format(pfad,50,"/Teleports/%s.txt",code);
    if(dini_Exists(pfad)) return 1;
    return 0;
    }

  • So ma schnell:


    Was funktioniert hier dran nicht?



    if(strcmp(MD5_Hash(inputtext), mysql_ReturnPasswort(SpielerName(playerid)), true) ==
    {
    Login(playerid);
    }
    if(strcmp(MD5_Hash(inputtext), mysql_ReturnPasswort(SpielerName(playerid)), true))
    {
    SendClientMessage(playerid, COLOR_WHITE, "Dies ist das falsche Passwort. Überleg noch mal scharf nach ;)");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Dein Account wurde gefunden. Gib bitte das Passwort ein.","Login","Abbrechen");
    return 1;
    }
    stock mysql_ReturnPasswort(Name[])
    {
    new query[130], Get[130];
    mysql_real_escape_string(Name, Name);
    format(query, 128, "SELECT passwort FROM accounts WHERE Name = '%s'", Name);
    mysql_query(query);
    mysql_store_result();
    mysql_fetch_row(Get);
    mysql_free_result();
    return Get;
    }
    Ingame funktioniert das einloggen nicht. Es wird immer die Message "Überleg noch mal scharf nach" geschickt...


    Help me, i'm hopeless :D

  • Guten Tag Forumgemeinde,


    ich habe ein kleines Problem mit MySQL ähnlich wie bei [XGRL]Lolifreak. Ich wollte meine Spieleraccounts per MySQL Laden lassen und habe es zuerst so Probiert:

    format(query, sizeof(query), "SELECT * FROM `accounts` WHERE `name`='%s'", SpielerInfo[playerid][pName]);
    mysql_query(query);
    mysql_store_result();
    if(mysql_retrieve_row())
    {
    mysql_get_field("banned",data);
    SpielerInfo[playerid][pGebannt] = strval(data);
    }




    Leider kam am Ende nur noch bei Command eingabe "SERVER: UNKNOWN COMMAND" Raus. Laut MySQL Debug wird alles richtig geladen. Dann habe ich es ein wenig umgebaut:

    format(query, sizeof(query), "SELECT * FROM `accounts` WHERE `name`='%s'", SpielerInfo[playerid][pName]);
    mysql_query(query);
    mysql_store_result();
    if(mysql_retrieve_row())
    {
    SpielerInfo[playerid][pGebannt] = mysql_get_field("banned",data);
    }


    Hier funktionieren die Commands wieder nur werden alle Werte mit 1 geladen, das heist in meinem Fall gebannt. Auch hier laut MySQL Debug werden alle Werte richtig geladen.


    Hat jemand noch eine Idee wie ich es richtig machen kann?


    //Edit: Ich nutze G-Stylez MySQL Plugin R6

    Na das ist ja Unglaublich! Was sucht denn dein Bein unter meinem Reifen du Sack?



  • So ist das schon richtig,
    denn wenn du das anders machst, wird immer 1 drin stehen, da der query ja erfolgreich war.


    versuch mal am ende des abschnitts sprich nach } mysql_free_result(); zu setzen


    //Edit: BBCode fail :S

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

    Margarete Stokowski

  • Danke erst mal BlackAce, das mysql_free_result steht am ende der klammer mit da, ich wollte nur nich meinen ganzen code hier rein pressen.
    Allerdings wenn ich das so mache dann funktionieren die ganzen Commands nicht mehr.

    Na das ist ja Unglaublich! Was sucht denn dein Bein unter meinem Reifen du Sack?


  • Gibt es eine Möglichkeit meinen TextDraw genau in der Mitte des Bildes zu platzieren?
    Ich weiß, der Mittelpunkt ist 320x240. Aber da der Text nach rechts geht ist es nicht mehr mittig.
    Ich hoffe ihr versteht was ich meine :3

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Wie verzögert man einen Command zum Beispiel der hier


    if (strcmp(cmdtext,"/paintball",true)==0)
    {
    SetPlayerPos(playerid,6253.05175781,-2162.83496094,12.94783306);
    SetPlayerVirtualWorld(playerid,1);
    SetPlayerHealth(playerid,100.0);
    return 1;
    }

    Leider fällt man bei den Koordinaten etwas nach unten wodurch man Leben verliert also möchtze ich dem Spieler gernen weider leben geben aber weill das alles gleichzeitig durchgeführt wird hatt man 100 Health dann werden die Health wieder auf 100 gesetzt und dann kommt man auch und es werden einem 20 HP ode so agbezogen

  • Per SetTimerEx,
    sollte das gut lösbar sein ;)


    BTW:
    Ich würde statt SetPlayerPos
    SetPlayerPosFindZ benutzen,
    dann sollte der Spieler nicht mehr "fallen"

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

    Margarete Stokowski

  • Also das mit dem SetPlayerFindZ würde mir noch besser gefallen, weil es weniger ausgenuzt werden kann aber wenn ich ads so mache:
    if (strcmp(cmdtext,"/paintball",true)==0)
    {
    SetPlayerPosFindZ(playerid,6253.05175781,-2162.83496094,12.94783306);
    SetPlayerVirtualWorld(playerid,1);
    SetPlayerHealth(playerid,100.0);
    return 1;
    }


    falle ich durch den Boden, weil ich mich zu einer gemappten Paintballarena teleportieren

  • Achso, die ist gemappt.
    Das ist dann natürlich klar :D


    Du benutzt sicherlich einen Streamer^^
    Dann solltest du bedenken, das es sehr unvorteilhaft ist für Böden,
    gestreamte Objekte zu nehmen.


    Für den Boden, sollte dann CreateObject benutzt werden

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

    Margarete Stokowski

  • Ja das Problem dasbei ist nur, dass ich die nicht gemappt habe und auch nicht mappen kann also weil ich auch nicht was von den Objekten der Boden ist.
    Der Macher hat dahinter zwar mit // die Bezeichnung geschrieben aber die helfen mir nicht


    Aber das ist egal ich hab ne andere Lösung gefunden.
    Ich wusste ja keien genauen koordinaten deswegen hab ich mich auf gut Glück zu einem Objekt geportet und bin dabei immer gefallen.
    Als ich dann auf dem Bode /save Paintball gemacht hab, hatte ich ja die genauen koordinaten und habs halt geändetr aber trotzdem Danke


    mal so nebenbei das SetPlayerPosFindZ was macht das genau? sucht das quasi den Boden?

  • SetPlayerPosFindZ setzet dich an die nächst mögliche Position an der du nicht durch den Boden fällst,
    sofern es zu den x und y Kordinaten passt

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

    Margarete Stokowski

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