Beiträge von Jari

    Das müsste dann bei OnPlayerStateChange reinkommen...
    Aber wie baue ich es da ein?
    Bei OnPlayerEnterVehicle könnte ich es einbauen, aber das ist wenn er versucht einzusteigen, nicht wenn er schon im Auto ist.
    Es gibt ja bei GF auch Autos, wenn man bei denen F drückt passiert rein garnichts, so sollte es bei mir auch sein ;)

    Hey
    Folgendes Problem:
    Ich möchte einige Vehicles nur für Admins zugänglich machen.
    Die Vehicles werden über ein Menü mit CreateVehicle erstellet, nun habe ich aber folgendes Problem:
    Welche IDs haben die Fahrzeuge?


    Könnte man das so irgendwie lösen??:
    new AdminVehicle;


    AdminVehicle = CreateVehicle(ID, X, Y, Z, A, C1, C2, -1);


    Und dann bei OnPlayerEnterVehicle irgendwie abfragen, ob der Player berechtigt ist?


    Wäre wirklich dankbar für Hilfe ;)


    Edit// Ich kann ja mit dem blöden GetPlayerVehicleID nichts anfangen, da ich so eine Zahl bekomme, ich muss jedoch etwas mit AdminVehicle vergleichen können :/
    Ich kann schon überprüfen, ob der Spieler in ein AdminVehicle geht, ich kann jedoch nichts dagegen unternehmen X(

    Ich konnte es gestern noch fixen, ich weiss jedoch nicht wo der Fehler war :/
    Filterscripts, Includes und Pawno-Bugs waren wohl die Ursache...

    Guten Abend
    Ich habe heute wieder angefangen mit Pawno zu scripten.
    Nachdem ich mich kurz wieder in das Ganze eingearbeitet hatte, ist mir aufgefallen, dass ich bei der Neuinstallation von Windoof vor 2 Tagen ein Script gelöscht hatte, an dem ich weiterarbeiten wollte.
    Jetzt konnte ich heute schon einiges wieder neu scripten, das Login- und Registersystem habe ich jedoch einfach aus dem GF kopiert (keine Zeit und keinen Bock gehabt).
    Naja, hier sieht man was rauskommt :/
    Folgendes Problem:
    Wenn ich auf den Server connect und gleich mal "/login blabla" eingebe, bekomme ich die Meldung "Verwendung: /login <Password>".
    Das finde ich schonmal komisch, wobei es am Anfang garnicht geklappt hat (wegen utils und morphinc).
    Der Login-Command blockt irgendwie auch den Register-Command, ich bekomme bei "/register blabla" nämlich auch "Verwendung: /login <Passwort>".
    Die Meldung "Verwendung: /login <Password>" kommt NUR beim Login-Block vor, beim Register-Block steht schon "Verwendung: /register <Passwort>".
    Darauf habe ich es nochmals versucht, jetzt jedoch zuerst mit "/register blabla", das hat auch geklappt, ini-Datei war im scriptfiles-Ordner drin.
    Nur das blöde Login-System will nicht X(


    Vllt habe ich auch einen blöden Anfängerfehler gemacht, es wäre jedoch nett, wenn mir jemand helfen würde.


    MfG


    Source:
    if(strcmp("/login", cmd, true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    new tmppass[64];
    if(gPlayerLoggedIn[playerid] == 1)
    {
    SendClientMessage(playerid, COLOR_WHITE, "Du bist bereits eingeloggt.");
    return 1;
    }
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Verwendung: /login <Passwort>");
    return 1;
    }
    strmid(tmppass, tmp, 0, strlen(cmdtext), 255);
    Encrypt(tmppass);
    OnPlayerLogin(playerid, tmppass);
    }
    return 1;
    }

    if(strcmp("/register", cmd, true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(gPlayerLoggedIn[playerid] == 1)
    {
    SendClientMessage(playerid, COLOR_WHITE, "Du bist bereits eingeloggt.");
    return 1;
    }
    format(string, sizeof(string), "%s.ini", gPlayerName);
    new File: hFile = fopen(string, io_read);
    if (hFile)
    {
    SendClientMessage(playerid, COLOR_YELLOW, "Dieser Name wird bereits verwendet.");
    fclose(hFile);
    return 1;
    }
    new tmppass[64];
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Verwendung: /register <Passwort>");
    return 1;
    }
    strmid(tmppass, tmp, 0, strlen(cmdtext), 255);
    Encrypt(tmppass);
    OnPlayerRegister(playerid,tmppass);
    }
    return 1;
    }

    Mein Register- und Loginsystem funktioniert nicht.
    Der Name wird unter "scriptfiles" richtig eingetragen, jedoch stimmt das Passwort, welches darin gespeichert wird nicht (die restlichen Informationen stimmen).
    Wenn ich mich registrieren, dann das Passwort eingebe, um mich einzuloggen, werde ich immer eingeloggt, obwohl das Passwort auch falsch sein könnte.
    Wo liegt das Problem?


    Hier mal der Code von OnPlayerText:


    public OnPlayerText(playerid, text[])
    {
    if(gRegistered == 0)
    {
    if(gLogged == 0)
    {
    format(Temparray, sizeof(Temparray), "%s.ini", PlayerInfo[playerid][pName]);
    new File: UserFile = fopen(Temparray, io_read);
    if(UserFile)
    {
    TextDrawSetString(TTemp, "~>~~n~~>~~n~~>~~n~~n~~>~~w~Benutzername wird bereits~n~~>~~w~verwendet!~n~~>~");
    SendClientMessage(playerid, COLOR_GRAD1, "Benutzername wird bereits verwendet!");
    fclose(UserFile);
    return 1;
    }

    new tmppass[64];
    Temparray = strtok(text, idx);
    strmid(tmppass, Temparray, 0, strlen(text), 255);
    Secure(tmppass);
    pRegister(playerid, tmppass);


    return 1;
    }

    else
    {
    TextDrawSetString(TTemp, "~>~~n~~>~~n~~>~~n~~n~~>~~w~Bereits eingeloggt~n~~>~~n~~>~");
    SendClientMessage(playerid, COLOR_GRAD1, "Bereits eingeloggt!");
    }

    return 1;
    }


    if(gRegistered == 1)
    {
    if(gLogged == 0)
    {
    new tmppass[64];
    Temparray = strtok(text, idx);
    strmid(tmppass, Temparray, 0, strlen(text), 255);
    Secure(tmppass);
    pLogin(playerid, tmppass);
    }

    else
    {
    TextDrawSetString(TTemp, "~>~~n~~>~~n~~>~~n~~n~~>~~w~Du bist bereits eingeloggt!~n~~>~~n~~>~");
    SendClientMessage(playerid, COLOR_GRAD1, "Du bist bereits eingeloggt!");
    }

    return 1;
    }

    return 1;
    }


    Dann noch pRegister und pLogin:


    public pRegister(playerid, pass[])
    {
    PlayerInfo[playerid][pMoney] = GetPlayerMoney(playerid);
    new var[32];
    PlayerInfo[playerid][pRegistered] = 1;
    gRegistered = 1;
    gLogged = 0;

    format(Temparray, sizeof(Temparray), "%s.ini", PlayerInfo[playerid][pName]);
    new File: UserFile = fopen(Temparray, io_write);
    if(UserFile)
    {
    strmid(PlayerInfo[playerid][pPass], pass, 0, strlen(pass), 255);
    format(var, 32, "Pass=%s\n", PlayerInfo[playerid][pPass]);fwrite(UserFile, var);
    format(var, 32, "Level=%d\n", PlayerInfo[playerid][pLevel]);fwrite(UserFile, var);
    format(var, 32, "AdminLevel=%d\n", PlayerInfo[playerid][pAdminLevel]);fwrite(UserFile, var);
    format(var, 32, "Deaths=%d\n", PlayerInfo[playerid][pDeaths]);fwrite(UserFile, var);
    format(var, 32, "Kills=%d\n", PlayerInfo[playerid][pKills]);fwrite(UserFile, var);
    format(var, 32, "Registered=%d\n", PlayerInfo[playerid][pRegistered]);fwrite(UserFile, var);
    format(var, 32, "Money=%d\n", PlayerInfo[playerid][pRegistered]);fwrite(UserFile, var);
    fclose(UserFile);
    }


    TextDrawSetString(TTemp, "~>~~n~~>~~n~~>~~n~~n~~>~~w~Account registriert!~n~~>~~w~Gib dein Passwort ein~n~~>~");
    SendClientMessage(playerid, COLOR_YELLOW, "Account registriert, gib dein Passwort ein!");


    return 1;
    }


    public pLogin(playerid, pass[])
    {
    format(Temparray, sizeof(Temparray), "%s.ini", PlayerInfo[playerid][pName]);
    new File: UserFile = fopen(Temparray, io_read);
    if ( UserFile )
    {
    new PassData[256];
    new keytmp[256], valtmp[256];
    fread( UserFile , PassData , sizeof( PassData ) );
    keytmp = ini_GetKey( PassData );
    if( strcmp( keytmp , "Key" , true ) == 0 )
    {
    valtmp = ini_GetValue( PassData );
    strmid(PlayerInfo[playerid][pPass], valtmp, 0, strlen(valtmp)-1, 255);
    }


    if(strcmp(PlayerInfo[playerid][pPass],pass, true ) == 0 )
    {
    new key[ 256 ] , val[ 256 ];
    new Data[ 256 ];
    while ( fread( UserFile , Data , sizeof( Data ) ) )
    {
    key = ini_GetKey( Data );
    if( strcmp( key , "Level" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pLevel] = strval( val ); }
    if( strcmp( key , "AdminLevel" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pAdminLevel] = strval( val ); }
    if( strcmp( key , "Deaths" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pDeaths] = strval( val ); }
    if( strcmp( key , "Kills" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pKills] = strval( val ); }
    if( strcmp( key , "Registered" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pRegistered] = strval( val ); }
    if( strcmp( key , "Money" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pMoney] = strval( val ); }
    }//end while
    fclose(UserFile);//close the file after everything has been read in the while


    gLogged = 1;

    TextDrawSetString(TTemp, "~>~~n~~>~~n~~>~~n~~n~~>~~w~Erfolgreich eingeloggt!~n~~>~~n~~>~");
    SendClientMessage(playerid, COLOR_YELLOW, "Erfolgreich eingeloggt!");

    if(PlayerInfo[playerid][pName] == SuperAdmin[playerid])
    {
    Temparray = "~w~Welcome ~l~H ~y~u ~l~N ~y~7 ~l~3 ~y~r";
    GameTextForAll(Temparray, 5000, 4);
    TTemp2 = TextDrawCreate(250.00, 250.00, "~w~Welcome ~l~H ~y~u ~l~N ~y~7 ~l~3 ~y~r");
    TextDrawAlignment(TTemp2, 0);
    TextDrawFont(TTemp2, 1);
    TextDrawUseBox(TTemp2, 0);
    TextDrawLetterSize(TTemp2, 0.299999, 1.300000);
    TextDrawSetOutline(TTemp2, 0);
    TextDrawSetProportional(TTemp2, 1);
    TextDrawShowForAll(TTemp2);
    SetTimer("DestroyWelcome", 5000, 0);
    }


    return 1;
    }


    else
    {
    SendClientMessage(playerid, COLOR_WHITE, "SERVER: Falsches Passwort.");
    fclose(UserFile);
    return 1;
    }
    }

    return 1;
    }


    Ich weiss nicht mehr weiter...


    Also zuerst mal lernen richtig zu schreiben, da bekommt man ja Augenkrebs 8|
    Habe mal alles markiert, was falsch ist...


    Hier noch ein paar nützliche Seiten:
    SeidSeit.de
    IdiotenApostroph

    Wenn man schon eine Free-Website nimmt, dann auch eine Top-Level-Domain!
    Einfach hier schauen, da gibt's gratis *.tk Domains.


    Bei Webspace würde ich empfehlen:
    Redio.de <- Werbefrei, 512 MB Speicher, Unlimited Traffic, Max. Dateigrösse 8 MB (komprimiert, beim Upload), Max. Dateigrösse 20 MB (unkomprimiert, auf Server)
    Bplaced.net <- Werbefrei, FTP, 2 GB Speicher, Unlimited Traffic, Max. Dateigrösse Unlimited

    Ja ja, solche Leute gibt's massenweise...
    Kaufen sich mit 10 GTA, gamen dann auf PS2, dann werden sie älter und dürfen an den PC...
    Dann spielen sie dort GTA und merken, dass es SA:MP gibt.
    Natürlich sind sie begeistert und wollen auch einen Server.
    Ok, der Kumpel / Freund will bei einem Server helfen.
    Am besten natürlich auch gleich ein Root-Server, den jemand sponsort xD
    Dann brauchen sie aber noch ein Script, ok, quatschen sie doch in ICQ jemanden an :P
    Und dann kommt's zu solchen Geschichten *rofl*


    Naja ich find's lustig ;)


    Achja, die Admin-Rechte als Belohnung habe ich ganz vergessen ^^


    ZUERST SCRIPTEN LERNEN (ODER GROSS WERDEN, DAMIT MAN'S VERSTEHT xD), DANN NACH SERVER BETTELN :P

    Es kommt ganz auf den Inhalt deiner Seite an.
    Bei manchen Seiten, bekommt der Betreiber mehrere Dollar pro Klick!
    Fun-Seiten, bringen dagegen kaum etwas.

    Hey
    Folgendes Problem:
    Wenn man sich auf meinem Server registrieren und einloggen will, kommt man auch mit falschem Passwort rein und alles ist buggy =(
    Hier der Code:
    public OnPlayerText(playerid, text[])
    {
    if(gRegistered == 0)
    {
    if(gLogged == 0)
    {
    format(Temparray, sizeof(Temparray), "%s.ini", PlayerInfo[playerid][pName]);
    new File: UserFile = fopen(Temparray, io_read);
    if(UserFile)
    {
    TextDrawSetString(TTemp, "~>~~n~~>~~n~~>~~n~~n~~>~~w~Benutzername wird bereits~n~~>~~w~verwendet!~n~~>~");
    SendClientMessage(playerid, COLOR_GRAD1, "Benutzername wird bereits verwendet!");
    fclose(UserFile);
    return 1;
    }

    new tmppass[64];
    Temparray = strtok(text, idx);
    strmid(tmppass, Temparray, 0, strlen(text), 255);
    Secure(tmppass);
    pRegister(playerid, tmppass);


    return 1;
    }

    else
    {
    TextDrawSetString(TTemp, "~>~~n~~>~~n~~>~~n~~n~~>~~w~Bereits eingeloggt~n~~>~~n~~>~");
    SendClientMessage(playerid, COLOR_GRAD1, "Bereits eingeloggt!");
    }

    return 1;
    }


    if(gRegistered == 1)
    {
    if(gLogged == 0)
    {
    new tmppass[64];
    Temparray = strtok(text, idx);
    strmid(tmppass, Temparray, 0, strlen(text), 255);
    Secure(tmppass);
    pLogin(playerid, tmppass);
    }

    else
    {
    TextDrawSetString(TTemp, "~>~~n~~>~~n~~>~~n~~n~~>~~w~Du bist bereits eingeloggt!~n~~>~~n~~>~");
    SendClientMessage(playerid, COLOR_GRAD1, "Du bist bereits eingeloggt!");
    }

    return 1;
    }

    return 1;
    }


    Dann noch Login + Register:


    public pLogin(playerid, pass[])
    {
    format(Temparray, sizeof(Temparray), "%s.ini", PlayerInfo[playerid][pName]);
    new File: UserFile = fopen(Temparray, io_read);
    if ( UserFile )
    {
    new PassData[256];
    new keytmp[256], valtmp[256];
    fread( UserFile , PassData , sizeof( PassData ) );
    keytmp = ini_GetKey( PassData );
    if( strcmp( keytmp , "Key" , true ) == 0 )
    {
    valtmp = ini_GetValue( PassData );
    strmid(PlayerInfo[playerid][pPass], valtmp, 0, strlen(valtmp)-1, 255);
    }


    if(strcmp(PlayerInfo[playerid][pPass],pass, true ) == 0 )
    {
    new key[ 256 ] , val[ 256 ];
    new Data[ 256 ];
    while ( fread( UserFile , Data , sizeof( Data ) ) )
    {
    key = ini_GetKey( Data );
    if( strcmp( key , "Level" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pLevel] = strval( val ); }
    if( strcmp( key , "AdminLevel" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pAdminLevel] = strval( val ); }
    if( strcmp( key , "Deaths" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pDeaths] = strval( val ); }
    if( strcmp( key , "Kills" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pKills] = strval( val ); }
    if( strcmp( key , "Registered" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pRegistered] = strval( val ); }
    if( strcmp( key , "Money" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pMoney] = strval( val ); }
    }//end while
    fclose(UserFile);//close the file after everything has been read in the while


    gLogged = 1;

    TextDrawSetString(TTemp, "~>~~n~~>~~n~~>~~n~~n~~>~~w~Erfolgreich eingeloggt!~n~~>~~n~~>~");
    SendClientMessage(playerid, COLOR_YELLOW, "Erfolgreich eingeloggt!");

    if(PlayerInfo[playerid][pName] == SuperAdmin[playerid])
    {
    Temparray = "~w~Welcome ~l~H ~y~u ~l~N ~y~7 ~l~3 ~y~r";
    GameTextForAll(Temparray, 5000, 4);
    TTemp2 = TextDrawCreate(250.00, 250.00, "~w~Welcome ~l~H ~y~u ~l~N ~y~7 ~l~3 ~y~r");
    TextDrawAlignment(TTemp2, 0);
    TextDrawFont(TTemp2, 1);
    TextDrawUseBox(TTemp2, 0);
    TextDrawLetterSize(TTemp2, 0.299999, 1.300000);
    TextDrawSetOutline(TTemp2, 0);
    TextDrawSetProportional(TTemp2, 1);
    TextDrawShowForAll(TTemp2);
    SetTimer("DestroyWelcome", 5000, 0);
    }


    return 1;
    }


    else
    {
    SendClientMessage(playerid, COLOR_WHITE, "SERVER: Falsches Passwort.");
    fclose(UserFile);
    return 1;
    }
    }

    return 1;
    }


    public pRegister(playerid, pass[])
    {
    PlayerInfo[playerid][pMoney] = GetPlayerMoney(playerid);
    new var[32];
    PlayerInfo[playerid][pRegistered] = 1;
    gRegistered = 1;
    gLogged = 0;

    format(Temparray, sizeof(Temparray), "%s.ini", PlayerInfo[playerid][pName]);
    new File: UserFile = fopen(Temparray, io_write);
    if(UserFile)
    {
    strmid(PlayerInfo[playerid][pPass], pass, 0, strlen(pass), 255);
    format(var, 32, "Pass=%s\n", PlayerInfo[playerid][pPass]);fwrite(UserFile, var);
    format(var, 32, "Level=%d\n", PlayerInfo[playerid][pLevel]);fwrite(UserFile, var);
    format(var, 32, "AdminLevel=%d\n", PlayerInfo[playerid][pAdminLevel]);fwrite(UserFile, var);
    format(var, 32, "Deaths=%d\n", PlayerInfo[playerid][pDeaths]);fwrite(UserFile, var);
    format(var, 32, "Kills=%d\n", PlayerInfo[playerid][pKills]);fwrite(UserFile, var);
    format(var, 32, "Registered=%d\n", PlayerInfo[playerid][pRegistered]);fwrite(UserFile, var);
    format(var, 32, "Money=%d\n", PlayerInfo[playerid][pRegistered]);fwrite(UserFile, var);
    fclose(UserFile);
    }


    TextDrawSetString(TTemp, "~>~~n~~>~~n~~>~~n~~n~~>~~w~Account registriert!~n~~>~~w~Gib dein Passwort ein~n~~>~");
    SendClientMessage(playerid, COLOR_YELLOW, "Account registriert, gib dein Passwort ein!");


    return 1;
    }


    Danke im Voraus...

    Danke für das Tutorial!
    Ich bevorzuge auch diese Programmierstruktur, da sonst die Standard-Funcs überfüllt werden.
    Ich lagere lieber den wesentlichen Code in eigenen Funcs aus, das verbessert die Übersicht deutlich...

    Ich finde Visual Pawn ein sehr gelungenes Programm, abgesehen von einigen Bugs.
    Nach einem Tag, wollte Visual Pawn kein Script mehr öffnen, weiss nicht mehr, was die Fehlermeldung war, glaube aber etwas mit dem Arbeitsspeicher...

    Ich bin froh, dass dieser blöde Sender weg ist.
    So dumme Leute, wie diese, habe ich selten gesehen.
    Ich habe mal das MMORPG Silkroad Online gespielt (jetzt leider keine Zeit mehr).
    Diese Idioten dort, haben dieses mehrfach getestet und damit den Ruf des Spiels geschädigt!
    Sie sagten, dass die Grafik schon nicht so toll sei, hatten jedoch alle Details auf "Low" ^^