[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
  • Nee, das Ausrufezeichen in Zeile 3 bei dir ;)


    Soll ja an dem Punkt ausgeführt werden, das Ausrufezeichen bewirkt das Gegenteil :P
    EDIT: Nun von mir ne Frage:


    Ich habe eine Zahlenmenge von ca. 50 Zahlen. Von dieser muss zufällig eine ausgewählt werden. Was ist da die schnellste Lösung? Spontan fällt mir random(100) ein und alle 2 Werte per switch eine andere auswählen, aber das wär echt umständlich. Hat jemand ne leichtere Lösung ? (Hoffe ihr versteht, was gemeint ist)

    Einmal editiert, zuletzt von BloodyEric ()

  • so könnte es gehen, habe ich allerdings nicht getestet :



    new werte[50];
    werte[0] = 25;
    werte[1] = 28;
    // usw


    Returnwert()
    {
    return werte[random(50)];
    }



    Nicht jeder, der sich für super hält, ist ein Superheld. :love:
    ------------------------------------------------------------------------------------------------

  • die Daten werden gespeichert, denn wenn ich den server wieder betrete spawnt man an der stelle wo man den Server verlassen hat, also muss die Datei vorhanden sein, aber wenn ich den Ordner, den ich in den .pwn-Datei angegeben habe, öffne sehe ich überhaupt keine Dateien, obwohl ich das als .ini im Script definiert habe

    Hat wirklich niemand eine Lösung für dieses Problem, das auch weiterhin noch besteht??
    Es ist echt nervig wenn ich die Dateien nicht öffnen kann, um beispielsweise Skinänderungen vorzunehmen

  • Ich habe das Loginsystem mit Hilfe des Tutorials von Blackfox erstellt. Die Datei muss ja erstellt worden sein, sonst wäre ja beim nächsten Connect nichts geladen worden. Es ist aber alles geladen worden.
    Soweit ist die Ordnerstruktur vorhanden: C:\Program Files (x86)\GTA\GTA San Andreas 1\scriptfiles\loginsystem
    und so sieht der Quellcode aus, der vom Loginsystem stammt:
    OnPlayerConnect
    new pname[MAX_PLAYERS],accFormat[128];
    GetPlayerName(playerid,pname,sizeof pname);
    format(accFormat,sizeof accFormat,"/loginsystem/%s.ini",pname);
    if(fexist(accFormat))
    {
    ShowPlayerDialog(playerid,DIALOG_LOGIN,1,"Login","Bitte logge dich ein, indem du dein Passwort eingibst.","Weiter","Abbrechen");
    }
    else
    {
    ShowPlayerDialog(playerid,DIALOG_REG,1,"Registrieren","Bitte Registriere dich, indem du dein Passwort eingibst.","Weiter","Abbrechen");
    }
    OnPlayerDisconnect
    new playername[MAX_PLAYERS],accFormat[128];
    GetPlayerName(playerid,playername,sizeof playername);
    format(accFormat,sizeof accFormat,"/loginsystem/%s.ini",playername);
    if(fexist(accFormat) && Spieler[playerid][eingeloggt] && !classselection)
    {
    dini_IntSet(accFormat,"wanted",GetPlayerWantedLevel(Spieler[playerid][wanted]));
    if(Spieler[playerid][beruf] == 0) {
    dini_IntSet(accFormat,"skin",GetPlayerSkin(playerid));
    }
    GetPlayerPos(playerid,Spieler[playerid][lastx],Spieler[playerid][lasty],Spieler[playerid][lastz]);
    dini_FloatSet(accFormat,"lastx",Spieler[playerid][lastx]);
    dini_FloatSet(accFormat,"lasty",Spieler[playerid][lasty]);
    dini_FloatSet(accFormat,"lastz",Spieler[playerid][lastz]);
    dini_IntSet(accFormat,"Geld",GetPlayerMoney(playerid));
    dini_IntSet(accFormat,"Score",GetPlayerScore(playerid));
    dini_IntSet(accFormat,"Beruf",Spieler[playerid][beruf]);
    }
    OnDialogResponse
    new pname[MAX_PLAYERS],accFormat[128];
    GetPlayerName(playerid,pname,sizeof pname);
    format(accFormat,sizeof accFormat,"/loginsystem/%s.ini",pname);
    if(response)
    {
    switch(dialogid) //Möglichkeit auswählen
    {
    case DIALOG_LOGIN: //Login
    {
    if(!strlen(inputtext))
    {
    ShowPlayerDialog(playerid,DIALOG_LOGIN,1,"Login","Bitte logge dich ein, indem du dein Passwort eingibst.","Weiter","Abbrechen");
    return SendClientMessage(playerid,0xFFFFFFFF,"Kein Passwort angegeben!");
    }
    if(strcmp(inputtext,dini_Get(accFormat,"Passwort")) == 0)
    {
    Spieler[playerid][wanted] = dini_Int(accFormat,"wanted");
    Spieler[playerid][skin] = dini_Int(accFormat,"skin");
    Spieler[playerid][lastx] = dini_Float(accFormat,"lastx");
    Spieler[playerid][lasty] = dini_Float(accFormat,"lasty");
    Spieler[playerid][lastz] = dini_Float(accFormat,"lastz");
    Spieler[playerid][beruf] = dini_Int(accFormat,"Beruf");
    GivePlayerMoney(playerid,dini_Int(accFormat,"Geld"));
    SetPlayerScore(playerid,dini_Int(accFormat,"Score"));
    SetPlayerWantedLevel(playerid,dini_Int(accFormat,"wanted"));
    Spieler[playerid][eingeloggt] = 1;
    SendClientMessage(playerid,0xFFFFFFFF,"Du wurdest erfolgreich eingeloggt.");
    }
    else
    {
    ShowPlayerDialog(playerid,DIALOG_LOGIN,1,"Login","Bitte logge dich ein, indem du dein Passwort eingibst.","Weiter","Abbrechen");
    SendClientMessage(playerid,0xFFFFFFFF,"Das Passwort war Falsch!");
    }
    }
    case DIALOG_REG: // Registrierung
    {
    if(!strlen(inputtext)) // Falls leere Eingabe
    {
    ShowPlayerDialog(playerid,DIALOG_REG,1,"Registrieren","Bitte Registriere dich, indem du dein Passwort eingibst.","Weiter","Abbrechen");
    return SendClientMessage(playerid,0xFFFFFFFF,"Das Passwort ist zu kurz!");
    }
    dini_Create(accFormat);
    dini_Set(accFormat,"Passwort",inputtext);
    Spieler[playerid][eingeloggt] = 1;
    Spieler[playerid][beruf] = 0;
    SendClientMessage(playerid,0xFFFFFFFF,"Account wurde angelegt und du wurdest eingeloggt.");
    classselection = true;
    ForceClassSelection(playerid);
    }
    }
    }
    else
    {
    switch(dialogid)
    {
    case DIALOG_LOGIN:ShowPlayerDialog(playerid,DIALOG_LOGIN,1,"Login","Bitte logge dich ein, indem du dein Passwort eingibst.","Weiter","Abbrechen");
    case DIALOG_REG:ShowPlayerDialog(playerid,DIALOG_REG,1,"Registrieren","Bitte Registriere dich, indem du dein Passwort eingibst.","Weiter","Abbrechen");
    }
    }

  • Fail. den Programme Ordner würde ich für sowas NIE benutzen. Und auf C: würde ich sowieso NIE etwas installieren. Man erstellt beim Aufsetzen eines PCs mindestens 2 Partitionen: Eine fürs System, den Rest für Daten / Spiele / etc.


    Und warum man nicht den Programme Ordner von Windows benutzt: Diese sind gesondert geschützt vom System.


    Anders kann ich mir nicht erklären, warum die Datei nicht zu sehen ist.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • //Edit hab anderes Problem
    //EDIT 2: Hab gefunden


    Ganz blöde Frage xD wie mache ich das 2 else für das erste If und dsa 1 else für das zweite if also:
    GetPlayerSkin = else 2
    RangeOfPoint = else 1


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(strcmp("/suche", cmdtext, true, 10) == 0)
    {
    if(GetPlayerSkin(playerid) == 217)
    {
    if(IsPlayerInRangeOfPoint(playerid, 10000000000.0,-1847.4036,1165.1617,39.5751))
    {
    SetTimer("timer",10,0);
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Du bist in keinem Ammunation");
    }
    else
    {
    SendClientMessage(playerid,COLOR_YELLOW,"Du bist ein Zombie!!!!");
    }
    }
    }
    return 1;
    }

  • Problem gelöst!! Danke
    Ich habe die Dateien vom SA:MP-Server einfach auf dem Desktop gespeichert.
    Allerdings ergibt sich jetzt ein weiteres Problem:
    Wenn man sich registriert wird nur das Passwort, aber nichts anderes gespeichert. Beim nächsten Login und darauf folgenden Verlassen wird alles ordnungsgemäß gespeichert. Wo liegt der Fehler? (deswegen das lange Zitat)


  • forward IsAProd(carid);
    public IsAProd(carid)
    {
    for(new i = 0; i < sizeof(Prodlaster); i++)
    {
    if(carid == Prodlaster[i])
    {
    return 1;
    }
    }
    return 0;
    }
    Unter Newstate=Playerstatedriver
    new newcar = GetPlayerVehicleID(playerid);
    if(IsAProd(newcar))
    {
    SendClientMessage(playerid, COLOR_WHITE, "INFO: Du kannst Produkte an Firmen ausliefern.");
    SendClientMessage(playerid, COLOR_WHITE, "INFO: Befehle: /buyprods /sellprods ");
    SendClientMessage(playerid, COLOR_WHITE, "INFO: Produkte kannst du an Fleischberg kaufen");
    format(string, sizeof(string), "Products: %d/%d", PlayerHaul[newcar][pLoad],PlayerHaul[newcar][pCapasity]);
    SendClientMessage(playerid, TEAM_GROVE_COLOR, string);
    }


    Wieso zeigt er mir den Text nicht in dem Auto an?

  • Brauche hilfe


    kommt der Error :C:\Dokumente und Einstellungen\a\Desktop\Server (selfmade)\gamemodes\Z.pwn(478) : error 032: array index out of bounds (variable "Tankstellen")


    zu der Zeile:
    if(IsPlayerInRangeOfPoint(playerid,15.0,Tankstellen[i][1],Tankstellen[i][2],Tankstellen[i][3]))

  • Kann man nur schätzen. Beim Tod ist das aber eindeutig (reason)

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