Beiträge von Anubis

    5/10


    Weil der inhalt wie du ja selbst sagst noch etwas dürftig ist und weil ich der meinung bin das die beiden samp foren als scripterzentrum vollkommen ausreichen, daher finde ich jede weitere com etwas überflüssig . Hier hat man alles was man braucht und bekommt auch alles.

    So, habe nochmal etwas experimentiert und habe die Lösung gefunden. Habe einfach einen Timer bei "OnPlayerConnect" eingesetzt der eine sekunde nach dem connect die position ändern soll und es hat funktioniert :) Der Strand blitzt einen kurzen moment auf und es wird sofort geswitched.


    Anscheinend kann man die pos nicht direkt beim connect ändern sondern nur zeitlich verzögert.



    forward skipscreen(playerid);


    public OnPlayerConnect(playerid)
    {
    SetTimer("skipscreen",1000,0);
    return 1;
    }


    public skipscreen(playerid)
    {
    if(IsPlayerConnected(playerid))
    {
    SetPlayerPos(playerid, 1088.0247,-1369.1608,340.7324);
    SetPlayerCameraPos(playerid, 1088.0247,-1369.1608,340.7324);
    SetPlayerCameraLookAt(playerid, 1461.4468,-1572.5127,169.9652);
    }
    return 1;
    }



    -CLOSED-

    Ja klingt eigentlich logisch aber habe bei diversen servern bereits gesehen das der Strand am anfang nicht eingezeigt wird sondern direkt die im script definierte pos - irgendeinen Trick muss es da ja geben........



    EDIT: Hab nochmal geschaut - je nachdem wie schnell die verbindung aufbaut erscheint der strand nur ganz kurz und dann wird geswitched. Habe ich mich wohl geirrt.....

    Hab da mal eine extrem noobige frage :D


    Bei samp hat man beim connect ja direkt den Strand als hintergrund. Habe jetzt versucht über "OnPlayerConnect" die pos zu ändern, hat nicht funktioniert. Dann habe ich es mit ins GUI Loginmenu eingebunden sodass die pos zeitglich mit dem erscheinen der loginbox erscheint - klappt auch nicht. Die Position für Class Request zu ändern war einfach aber diesen connectscreen bekomme ich einfach nicht weg.



    Weiß jemand wie ich das ändern kann ?



    Mit freundlichen Grüßen


    Anubis

    So problem gelöst. Habe mir mal das loginsystem von bfx angeguckt und da die Lösung gefunden - im prinzip das gleiche was maddin schon angesprochen hatte mit strlen.

    if(dialogid == loginbox)
    {
    if(response == 1)
    {
    format(save,sizeof(save),"spieler/%s.ini",playername[playerid]);
    {
    if(dini_Exists(save)) // wenn die ini existiert
    {
    if(!strlen(inputtext))
    {
    ShowPlayerDialog(playerid,loginbox,DIALOG_STYLE_INPUT,"Login","Gebe dein Passwort ein","Einloggen","Abbrechen");
    return SendClientMessage(playerid,COLOR_ROT,"Kein Passwort angegeben!");
    }
    if(strcmp(inputtext,dini_Get(save,"passwort")) == 0)
    {
    blablub;
    }
    else
    {
    SendClientMessage(playerid,COLOR_ROT,"Falsches Passwort.");
    ShowPlayerDialog(playerid,loginbox,DIALOG_STYLE_INPUT,"Login","Gebe dein Passwort ein","Einloggen","Abbrechen");
    }}}}
    if(response == 0)
    {
    Kick(playerid);
    }}



    Thx an alle die geholfen haben.



    -CLOSED-

    Nuja aber wenn man das richtige passwort eingibt wird man ja eingeloggt also kann der string doch nicht leer sein ? Die eingabe aus dem textfeld wird ja sofort mit dem passwort der ini abgeglichen.......


    falsches passwort = kein login // returnt "Falsches Passwort"
    richtiges passwort = login // returnt "Eingeloggt"
    kein passwort = login // sollte doch das gleiche sein wie ein falsches passwort =?



    Was genau meinst du also damit das der string leer sein soll ?

    Guten Abend zusammen,


    Habe eben einen schwerwiegenden fehler in meinem loginsystem entdeckt, wenn man ein falsches passwort eingibt kommt zwar die meldung das das passwort falsch ist aber wenn man garnichts eingibt und auf login klickt wird man einfach ohne weiteres eingeloggt und alle inidaten werden geladen.Das soll natürlich so nicht sein^^


    Muss ich hier vielleicht etwas ändern ?

    if(strcmp(inputtext,dini_Get(save,"passwort")) == 0)


    Wenn nicht, was muss ich tun ? Bin da wirklich ratlos.........



    Mit freundlichen Grüßen


    Anubis

    Habe den makeleader befehl jetzt verändert, da war nämlich die cmdlänge nicht definiert, daran lag es :)


    alt:
    if(!strcmp(strget(cmdtext, 0), "/makeleader"))
    neu:
    if(strcmp(cmdtext,"/makeleader",true,11)== 0)

    Also mit den returns ist alles in ordnung und denke mal nicht das es daran liegt denn bei dem megafon text wird das m nicht mit gesendet da aus dem m aus /makeleader - /m gemacht wird womit das megafon zusätzlich angesprochen wird. Deswegen steht dann als megafon text auch nur "akeleader". Sehr merkwürdig....

    Nabend zusammen,


    Und zwar überschneiden sich in meinem GM die commands einfach. Wenn ich zb /makeleader 0 3 benutze wird automatisch auch der befehl /m für das megafon ausgeführt und dann erscheint als megafontext "akeleader 0 3".
    Kann ich das irgendwie verhindern =?


    if(!strcmp(strget(cmdtext, 0), "/makeleader"))


    if(strcmp(cmdtext,"/m",true,2) == 0)





    Vielen dank schonmal im vorraus, ist sehr wichtig :)


    Mit freundlichen Grüßen


    Anubis

    For schleifen werden meist dazu benutz um eine Funktion für jeden Spieler ausführen zu lassen
    Ich habe mal ein Tutorial zu den Schleifen/Loops geschrieben dort wirds eig recht ausführlich erklärt!
    Guck es dir mal an!

    Ja oder um zu überprüfen welcher Spieler eine gewisse bedingung erfüllt, zb bei einem Fraktionsschat der auch bei mir mit so einer schleife einwandfrei funktioniert. So eine Schleife wird in deinem Tutorial leider nicht erklärt :whistling:

    Funktioniert leider nicht. Diese meldung ->

    SendClientMessage(playerid,COLOR_STAHLBLAU,"Du hast einen Notruf an das LSPD abgesetzt.");



    wird jetzt immer - ich nehme an 500 mal ausgegeben.Auf jeden fall wird der chat damit zugespammt.

    Guten Abend zusammen,


    Habe hier mal einen auszug aus meinen Script, wie man sieht wird an dieser stelle ein Notruf an alle Cops gesendet.Allerdings wird nicht berücksichtigt ob ein cop online ist, wenn jemand einen Notruf absetzt wird der Notruf abgesetzt und zusätzlich bekommt er die meldung das keiner im Dienst ist auch wenn einer da ist.Da die schleife ja alle Spielerdurchläuft findet sie logischerrweise Spieler die kein Cop sind undwelche die Cop sind, infolgedessen werden deswegen beide meldungen ausgegeben.


    Stellt sich also nur die frage was ich da hinzufügen muss um zu signalisieren das ein Cop gefunden wurde bevor der rest ausgeführt wird ?



    if(listitem == 0)
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(pInfo[i][fraktion] == LSPOLICE)
    {
    SendClientMessage(playerid,COLOR_STAHLBLAU,"Du hast einen Notruf an das LSPD abgesetzt.");
    SendClientMessage(i,COLOR_STAHLBLAU,sosmsg);
    soslspdid = playerid;
    }
    else return SendClientMessage(playerid,COLOR_ROT, "Momentan ist kein Los Santos Polizist im Dienst.");
    }}



    Mit freundlichen Grüßen


    Anubis

    Habe es jetzt ähnlich gelöst, danke für eure hilfe :)


    if(!strcmp(cmdtext,"/live",_,5))
    {
    if(pInfo[playerid][fraktion] == REPORTER)
    {
    new sendlive[128];
    format(sendlive,sizeof sendlive,"LIVE %s: %s",playername[playerid],cmdtext[6]);
    SendClientMessageToAll(COLOR_ORANGE, sendlive);
    }
    else return SendClientMessage(playerid,COLOR_ROT,"Du bist kein San Andreas Reporter !");
    }



    Funktioniert nun einwandfrei :)

    Ja das hab ich soweit verstanden, ich möchte bloss das alles was nach dem cmd /live eingeben wird als text formatiert und dann wie man in der funktion erkennen kann als SendClientMessageToAll ausgegeben wird.

    Guten Abend,


    Für meinen live Befehl muss ich eigentlich nur wissen wie man den text hinter einem Befehl als Text formatiert sodass man ihn als ClientMessage ausgeben kann.


    Meiner ist imo totaler blödsinn aber vielleicht kann ihn mir ja jemand einfach mal korrigieren :)


    if(strcmp(strget(cmdtext, 1), "/live")) // ???
    {
    if(pInfo[playerid][fraktion] == REPORTER)
    {
    new sendlive[128];
    new livetext[64] = strcmp(cmdtext); // ???
    format(sendlive,sizeof sendlive,"LIVE %s: %s",playername[playerid],livetext);
    SendClientMessageToAll(COLOR_ORANGE, sendlive);
    }
    else return SendClientMessage(playerid,COLOR_ROT,"Du bist kein San Andreas Reporter !");
    }



    Vielen dank schonmal im vorraus.



    Mit freundlichen Grüssen


    Anubis