Beiträge von StarDrink


    Klassischer Fall von wiedermal C&P.


    Bisschen Ahnung von der Materia sollte man schon haben. Ich geb dir mal paar Anhaltspunkte: Symbole bereits definiert, undefiniertes Symbol "ROT".

    Hi,


    zu deinem Payday-System, habs jetzt gerade nur übersprungen, da ich gleich ins Bett gehe.


    Wieso lässt du eine Variable als Timer benutzen, anstatt direkt 60000 hinzuschreiben? Alternativ hast du hier mal ein Payday-System, das für jeden Spieler extra generiert. Bedeutet, jeder Spieler, der SEINE Stunde Onlinezeit hat, bekommt Payday, nicht anders ;)


    Ganz oben:

    forward pimer(playerid);
    new pimerday[MAX_PLAYERS];


    In deinen Userprofilen (z.B. enum pInfo):

    pSincePayday


    Bei OnPlayerConnect:

    pimerday[playerid] = SetTimerEx("pimer",60000,1,"i",playerid); //Generiert für playerid einen Timer von 60000 Millisekunden (1 Minute)


    Und ganz unten, den schönen pimer-Public ;)

    public pimer(playerid)
    {
    if(PlayerInfo[playerid][pSincePayday] >= 60)
    {
    PlayerInfo[playerid][pSincePayday] = 0;
    PlayerPlaySound(playerid,1068,0.0,0.0,0.0);
    //Payday-Zeugs von dir hier rein ;-)
    }
    else
    {
    PlayerInfo[playerid][pSincePayday]++;
    }
    }


    pSincePayday musst du natürlich auch beim Verlassen eines Spielers speichern, sonst bekommt er nur seinen Payday, wenn er eine Stunde durchgehend online ist. Der Code ist jetzt aber nicht für "Ui, da ist ja einer - den nehm ich! gedacht, sondern auch selber nachdenken und schauen, wie du den ggf. für dich umbauen kannst.


    Hoffe konnte dir helfen, Gute Nacht! ;)

    Zudem dürfte dein System sowieso nicht funktionieren, da das return 1; nach ner Variablenänderung fehlt...


    Funktioniert schon. Das return 1; ist nicht unbedingt nötig, da es ganz am Ende auch steht. Frisst halt paar Ressourcen mehr, da er es bis zum Ende durcharbeitet.


    B2T:
    Der Kommentar von duengonalex dürfte alles sagen, solltest du noch weitere Probleme haben, melde dich einfach ;)


    So mein Letztes problem ich gebe ingame /stats5 ein und nichts kommt :)


    Hast du ganz unten return 1?
    Lässt du alles korrekt ausgeben?


    Falls du den Fehler eben nicht findest, kontaktiere mich mal per PN, dann machen wir's zusammen.

    Hi,


    deine Array-Größe ist zu klein. Mach mal premium[20] und admin[20] auf premium[65] und admin[65], das dürfte dann reichen.

    Hi,


    Wenn du bei Punkt A stehst (ich gehe davon aus, dass du keine bestimmten Koordinaten dafür benutzen möchtest) gibst du /enter ein und wirst nach 5 Sekunden zurück teleportiert. Hier der Befehl, ungetestet.


    Ganz oben als Globale Variablen:

    new Float:PortX, Float:PortY, Float:PortZ;



    if(strcmp(cmd,"/enter") == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    GetPlayerPos(playerid,PortX,PortY,PortZ); //Speichert aktuelle Koordinaten in die Variablen
    SetPlayerPos(playerid,x,y,z); //Portet den Spieler zu den koordinaten die du angibst
    SendClientMessage(playerid,FARBE,"Du hast dich teleportiert!"); //Sendet dem Spieler eine Nachricht das er Teleportiert wurde
    SetTimerEx("Port",5000,0,"i",playerid); //Löst nach 5 Sekunden einen Timer aus
    }
    }



    Timer ganz unten definieren:

    forward Port(playerid);
    public Port(playerid)
    {
    SetPlayerPos(playerid,PortX,PortY,PortZ); //Teleportiert den Spieler zurück
    SendClientMessage(playerid,FARBE,"Duwurdest dich zurück teleportiert!"); //Sendet ihm erneut eine Nachricht das er zurück teleportiert wurde
    }



    Wie gesagt, ist ungestet, müsste aber funktionieren.


    /E: Du kannst mich auch per PN benachrichtigen, dann machen wir das zusammen.

    Habe es gemacht


    Hi,


    im Grunde musst du eigentlich nur so umbauen:


    Ganz oben:
    #define DIALOG_STATS 754


    Bei dem /stats Befehl:

    new string[256];
    format(string,sizeof(string),"Name: %s \nKills: %d \n Adminlevel: %d",SpielerName,Kills,Adminlevel);
    ShowPlayerDialog(playerid,DIALOG_STATS,DIALOG_STYLE_MSGBOX,"Stats",string,"Fertig","Abbrechen");


    So kannst du das aufbauen, natürlich musst du das Formatieren an dein System anpassen.


    /E: Solltest du noch Hilfe benötigen, kannst du mich per PN kontaktieren. Dann machen wir das zusammen ;)

    So ein Kommentar wie deiner brauch ich nicht! Ich habe hier einfach nur gefragt ob jemand mir helfen kann.


    Verarschen? Ist das keine Hilfe, wenn man dir die Schritte aufzählt? Etwas Grundwissen in der Materie sollte man schon haben.


    /E: Und wenn du es alleine auf MySQL umgeschrieben hast, dürfte meine Antwort mehr als genug Hilfe bieten.

    WBB_IsValidUser(SpielerName(playerid),playerid);


    bei
    public WBB_GotUserValidState ( Index , State ) {
    ....
    playerid mit Index ersetzten


    Werde ich direkt mal testen, vielen Dank.


    //Edit:
    //Edit: Zum Text etwas hinzugefügt
    //Edit


    Geht immernoch nicht, wird alles nur bei ID 0 angezeigt. Musste es bei OnPlayerLogin reinmachen, bei OnPlayerRequestClass kackt der Server ab 8|
    Noch dazu zeigt er immer, dass die Verbindung zum Forum fehlgeschlagen ist, und man sich an einen Administrator melden soll.... Woran liegt das?


    Hat noch jemand eine Lösung? Bitte :(

    So:


    public OnPlayerRequestClass(playerid, classid)
    {
    new string[128];
    if(IsPlayerNPC(playerid))
    {
    SpawnPlayer(playerid);
    return 1;
    }
    if(gPlayerAccount[playerid] == 1 && gPlayerLogged[playerid] == 0)
    {
    format(string,sizeof(string),"Dein Account wurde gefunden.\n\nDu kannst dich nun einloggen.\n\nViel Spaß auf German Rockerz Reallife");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login",string,"Login","Abbrechen");
    }
    else if(gPlayerAccount[playerid] == 0 && gPlayerLogged[playerid] == 0)
    {
    ShowPlayerDialog(playerid,DIALOG_REG,DIALOG_STYLE_MSGBOX,"Account","Du benötigst einen Account, um auf diesem Server zu spielen!","Erstellen","Abbrechen");
    }
    WBB_IsValidUser(SpielerName(playerid));
    PlayerInfo[playerid][pModel] = Peds[classid][0];
    return 1;
    }


    //Edit
    PWN bearbeitet

    Guten Tag,


    Ich habe folgendes Problem:


    Ich habe WBB_Connect 2.0 (ja, ich weiß, 3.0 gibt es schon) in mein Script eingebunden. Es wird beim registrieren auch ein neuer Account erstellt, passt soweit alles.


    Allerdings habe ich bei den Callbacks ein Problem. So sehen meine Callbacks aus:


    public WBB_GotUserPasswordCheckState ( Index , State ) {
    if( State )
    {
    SendClientMessage( playerid, COLOR_LIGHTBLUE, "Die Verbindung zum Forum wurde aufgebaut!");
    SendClientMessage( playerid, COLOR_LIGHTBLUE, "Du bist nun mit dem Forum verbunden!");
    }
    else
    {
    SendClientMessage( playerid, COLOR_LIGHTRED, "Die Verbindung zum Forum ist fehlgeschlagen!");
    SendClientMessage( playerid, COLOR_LIGHTRED, "Melde dies umgehend einem Administrator!");
    }
    return 1;
    }


    public WBB_GotUserTitle ( Index , Title[ ] ) {
    return 1;
    }


    public WBB_GotUserValidState ( Index , State ) {
    if( State )
    {
    SendClientMessage(playerid,COLOR_WHITE,"Dein Forumaccount wurde gefunden!");
    WBB_CheckUserPassword(SpielerName(playerid),PlayerInfo[playerid][pKey]);
    }
    else
    {
    SendClientMessage(playerid,COLOR_WHITE,"Dein Forumaccount konnte nicht gefunden werden!");
    SendClientMessage(playerid,COLOR_WHITE,"Erstelle Forenaccount.");
    SendClientMessage(playerid,COLOR_WHITE,"Fortschritt: 19%");
    WBB_AddUser(SpielerName(playerid),"EMAIL_AENDERN@grreallife.de",PlayerInfo[playerid][pKey],1); // Account wird angelegt. Parameter = 1. Name | 2. E-Mail | 3. Passwort.
    SendClientMessage(playerid,COLOR_WHITE,"Fortschritt: 56%");
    WBB_SetUserToGroup(SpielerName(playerid),3); // User wird der BenutzerGruppe hinzugefügt
    SendClientMessage(playerid,COLOR_WHITE,"Fortschritt: 88%");
    WBB_EnableUser(SpielerName(playerid)); //User wird aktiviert
    SendClientMessage(playerid,COLOR_WHITE,"Fortschritt: 100%");
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "Dein Forumaccount wurde erfolgreich erstellt!");
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "Deine Emailadresse musst du ändern!");
    WBB_CheckUserPassword(SpielerName(playerid),PlayerInfo[playerid][pKey]);
    }
    return 1;
    }


    public WBB_OnInitialize ( State ) {
    if ( State )
    {
    printf ("Die Verbindung zum Forum wurde erfolgreich aufgebaut!");
    }
    else
    {
    printf ("Die Verbindung zum Forum konnte nicht aufgebaut werden!");
    }
    return 1;
    }


    Ich bin mir nicht sicher ob das so richtig ist, allerdings bringt er mir auch immer den Error "Undefined Symbol "playerid", wenn ich anstatt playerid Index nehme kann die Nachrichten jeder lesen.... Bin gerade echt überfordert...


    //Edit: Überschrift geändert