[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
  • :/

  • Guten Nachmittag, hab da eine Frage an euch ... :D
    Dialog wird ausgeführt, aber der "Public OnUserLogin" wird nicht richtig aufgerufen, weißt du die Lösung, zufällig ?
    Die Nachrichten aus dem Public zB werden mir gar nicht im Chat Geschrieben, bin am Verzweilen ...
    Auch die Prints werden alle in der Konsole angezeigt...



    Das sagt die LOG bzw. logs -> plugins -> mysql

    [11:38:43] [INFO] query "SELECT * FROM `Accounts` WHERE `Spielername` = '2Fast4YouDE' AND `Passwort` = 'test'" successfully executed within 0.255 milliseconds
    [11:38:43] [INFO] Executing callback 'OnUserLogin' with 1 parameter...
    [11:38:43] [INFO] Callback successfully executed.



    case DIALOG_LOGIN:
    {
    if(response)
    {
    //if (!(MIN_LENGTH_PASSWORD <= strlen(inputtext) <= MAX_LENGTH_PASSWORD))
    if(strlen(inputtext) <= 3)
    {
    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login Überschrift", ""#FARBE_WEISS"Trage dein Passwort ein!\n\nInfo: Das Passwort muss aus 4-24 Zeichen bestehen!", "Bestätigen", "Abbrechen");
    PlayerPlaySound(playerid, 1085, 0.00, 0.00, 0.00);
    }
    else
    {
    strdel(query, 0, 512);
    mysql_format(Handle, query, sizeof(query), "SELECT * FROM `Accounts` WHERE `Spielername` = '%e' AND `Passwort` = '%e'", sInfo[playerid][sName], inputtext);
    mysql_pquery(Handle, query, "OnUserLogin", "d", "playerid");
    PlayerPlaySound(playerid, 1085, 0.00, 0.00, 0.00);
    }
    return 1;
    }
    }

    forward OnUserLogin(playerid);
    public OnUserLogin(playerid)
    {
    print("1");
    new rows;
    cache_get_row_count(rows);
    print("2");
    if(rows != 1)
    {
    // Falsches Passwort
    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login Überschrift", ""#FARBE_WEISS"Trage dein Passwort ein!\n\nInfo: Das Passwort muss aus 4-24 Zeichen bestehen!", "Bestätigen", "Abbrechen");
    PlayerPlaySound(playerid, 1085, 0.00, 0.00, 0.00);
    SendClientMessage(playerid, -1, "Falsches PW");
    print("3");
    }
    else
    {
    print("4");
    SendClientMessage(playerid, -1, "Positiv");
    for(new i = 0; i < sizeof(vRP_Login[]); i++)
    {
    PlayerTextDrawHide(playerid, vRP_Login[playerid][i]);
    PlayerTextDrawDestroy(playerid, vRP_Login[playerid][i]);
    }
    print("5");


    cache_get_value_name_int(0, "Skin", sInfo[playerid][sSkin]);
    cache_get_value_name_int(0, "Geschlecht", sInfo[playerid][sGeschlecht]);
    cache_get_value_name_int(0, "Geburtstag", sInfo[playerid][sGeburtstag]);
    print("6");


    cache_get_value_name_float(0, "PosX", sInfo[playerid][sSpawnX]);
    cache_get_value_name_float(0, "PosY", sInfo[playerid][sSpawnY]);
    cache_get_value_name_float(0, "PosZ", sInfo[playerid][sSpawnZ]);
    cache_get_value_name_float(0, "PosA", sInfo[playerid][sSpawnA]);
    print("7");


    TogglePlayerSpectating(playerid, false);


    SetPlayerPos(playerid, sInfo[playerid][sSpawnX], sInfo[playerid][sSpawnY], sInfo[playerid][sSpawnX]);
    SetPlayerFacingAngle(playerid, sInfo[playerid][sSpawnA]);
    SetCameraBehindPlayer(playerid);
    print("8");


    sInfo[playerid][sEingeloggt] = true;
    }
    return 1;
    }


    MfG.

    Die Missglückte Persönlichkeit, Ciao!

  • Wenn ich ein Fahrzeug erstelle..


    Beispiel: abc = Createvehicle...


    Konkret:

    cInfo[i][id_x] = SetVehicleNumberPlate(CreateVehicle(modelid,RandomCarDealer2Spawn[rand2][0],RandomCarDealer2Spawn[rand2][1],RandomCarDealer2Spawn[rand2][2],RandomCarDealer2Spawn[rand2][3],cInfo[i][carcolor1],cInfo[i][carcolor2],-1)," ");


    müsste dann nicht "abc" die neue Fahrzeug ID sein? Also zB 100, wenn es das 100ste Fahrzeug ist?


    Frage ich "abc" ab, kommt 0 raus..


    Wie kann ich die ID des fahrzeugsbekommen?

  • Frage ich "abc" ab, kommt 0 raus..

    Das liegt daran, dass du den Wert von SetVehicleNumberPlate bekommst und nicht von CreateVehicle.


    Kannst es so machen:

    C
    SetVehicleNumberPlate(cInfo[i][id_x] = CreateVehicle(modelid,RandomCarDealer2Spawn[rand2][0],RandomCarDealer2Spawn[rand2][1],RandomCarDealer2Spawn[rand2][2],RandomCarDealer2Spawn[rand2][3],cInfo[i][carcolor1],cInfo[i][carcolor2],-1)," ");


    :/

    Ja, keine Ahnung warum dir kein anderer antwortet oder du dein Problem nicht von Anfang an vernünftig artikulierst ^^


    Mach mal deine Funktion so:


    C
    public SetPlayerRandomCheckpoint(playerid)
    {
     	new zufall = random(sizeof(RandomCheckpoint));
    	SetPlayerCheckpoint(playerid, RandomCheckpoint[zufall][0], RandomCheckpoint[zufall][1], RandomCheckpoint[zufall][2], 5);
    	return zufall;
    }

    Dann kannste nämlich sowas im Befehl machen:



    Hoffe Richtung ist klar geworden ;)

    ast2ufdyxkb1.png


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

  • Grüßt euch,


    Code
    [22:30:51] Script[gamemodes/Deathmatch.amx]: Run time error 17: "Invalid/unsupported P-code file format"

    Kann mir wer helfen, habe eben irgend einen Fehler eingebaut, weiß nur nicht welchen.
    Beim compilen stürtzt dieser auch ab.

  • Habe auch wieder ein Problem.. Was muss ich mit dem string machen, wenn mehrere Autos Erstellt werden?(Nummernschild)
    kann ich dem String ein MAX_VEHICLES zuweisen?!
    Jedes Auto nach dem ersten bekommt immer "NULL"



    public OnPlayerCarsLoad()
    {
    new num_fields,num_rows;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(!num_rows)return 1;
    for(new i=0; i<num_rows; i++)
    {
    new id=getFreeCarID();
    cInfo[id][c_x]=cache_get_field_content_float(i,"x",dbhandle);
    cInfo[id][c_y]=cache_get_field_content_float(i,"y",dbhandle);
    cInfo[id][c_z]=cache_get_field_content_float(i,"z",dbhandle);
    cInfo[id][c_r]=cache_get_field_content_float(i,"r",dbhandle);
    cInfo[id][id_db]=cache_get_field_content_int(i,"ID",dbhandle);
    new tmp_LicensePlate[16]; //funktioniert nur fürs erste
    cache_get_field_content(id, "LicensePlate", tmp_LicensePlate, dbhandle);
    strmid(cInfo[id][plate], tmp_LicensePlate, 0, sizeof(tmp_LicensePlate),sizeof(tmp_LicensePlate));



    cInfo[id][id_x]=CreateVehicle(cInfo[id][carmodel],cInfo[id][c_x],cInfo[id][c_y],cInfo[id][c_z],cInfo[id][c_r],cInfo[id][carcolor1],cInfo[id][carcolor2],-1);
    SetVehicleNumberPlate(cInfo[id][id_x],tmp_LicensePlate);
    VehicleLinkID[cInfo[id][id_x]] = cInfo[id][id_db];
    printf("cInfo id %d id_X %d linked to %d",id, cInfo[id][id_x],VehicleLinkID[cInfo[id][id_x]]);
    VehicleIsSpawned[cInfo[id][id_db]] = 1;
    }
    return 1;
    }

  • Wieso bekomme ich den String TAFEL1 nicht übertragen? TAFEL1 wird überschrieben aber nicht übertragen



    Ich gebe eigentlich 1/2/3 ein aber es wird immer "Hier könnte ihre Werbung stehen" ausgegeben.
    Und das ist der Standarttext von Werbetafeln[wtafelvar][wtafeltext]



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

    • Offizieller Beitrag

    Ich gebe eigentlich 1/2/3 ein aber es wird immer "Hier könnte ihre Werbung stehen" ausgegeben.

    Wenn ich das richtig verstanden habe, hast du bei deinen Format's einfach nur die Parameter verdreht.
    Der erste Parameter, ist der String, der verändert werden soll.


    Somit müsste es heißen format(Werbetafeln[wtafelvar][wtafeltext], sizeof(TAFEL1), TAFEL1);
    (So wird TAFEL1 in Werbetafeln... geschrieben.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Sorry, noch eine Frage :)


    Wie sage ich dem Dialog, dass er die Texte untereinander Ordnen soll ? Ich habe beispiel 12 Sätze die im Dialog untereinander angezeigt werden sollen.


    Hallo
    Hallo
    Hallo


    Aber alle mit einem String
    format(string,sizeof(string),"%i. Information: %s\n",wtafel, Werbetafeln[wtafel][wtafelinfo]);
    Dachte das \n bringt es ^^ Wird aber leider nur der aller letzte Satz angezeigt


    Screen:



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

    • Offizieller Beitrag

    Ansich ist das \n schon richtig, du bräuchtest nur noch eine Schleife, mit der Du das ganze immer wieder in den String schreibst.
    Dann hast du das zum Beispiel so:



    Code
    new string][256], var;
    for(new i = 1; i < 12; i++)
    {
    	if(!var) format(string, sizeof(string), "{FFFFFF}Zeile Nr: %d\n", i);
    	else format(string, sizeof(string), "%sZeile Nr: %d\n", string, i);
    	var++;
    }
    ShowPlayerDialog(playerid, ..);

    Die Geschichte mit den Farbcodes kannst du natürlich weg lassen, ich mag es nur nicht^^

  • Immer noch das selbe.. Habe meine vorhandene Schleife einfach behalten und deins angepasst.

    for(new wtafel=0;wtafel<sizeof(Werbetafeln);wtafel++)
    {
    if(!var) format(string, sizeof(string), "%i. Information: %s\n",wtafel, Werbetafeln[wtafel][wtafelinfo]);
    else format(string, sizeof(string), "%i. Information: %s\n",wtafel, Werbetafeln[wtafel][wtafelinfo]);
    var++;
    ShowPlayerDialog(playerid, DIALOG_WTAFELLIST, DIALOG_STYLE_LIST, "Wähle eine Werbetafel aus",string, "Auswählen", "Abbrechen");
    }


    Schau mal, wie mache ich das dann bei OnDialogResponse? Habe ja dann nur 1 Listitem.. Kann ich das dann grad so lassen? In dem Listitem hat ja dann trotzdem jedes seinen individuellen Wert oder?



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)


  • Immer noch das gleiche :/



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

    • Offizieller Beitrag

    Immer noch das gleiche

    Ist ja auch immer noch falsch^^
    Hab da mal was gebastelt, ich nehme mal an das dieses wtafelinfo ein String ist.

    Code
    for(new wtafel;wtafel < sizeof(Werbetafeln); wtafel++)
    {
    	if(!var) format(string, sizeof(string), "%i. Information: %s.\n", wtafel, Werbetafeln[wtafel][wtafelinfo]);
    	else format(string, sizeof(string), "%s%i. Information: %s\n", string, wtafel, Werbetafeln[wtafel][wtafelinfo]);
    	var++;
    }
    ShowPlayerDialog(playerid, DIALOG_WTAFELLIST, DIALOG_STYLE_LIST, "Wähle eine Werbetafel aus",string, "Auswählen", "Abbrechen");
    return 1;
  • do.de - Domain-Offensive - Domains für alle und zu super Preisen