Beiträge von Kaliber

    Hallo,


    Im pRP habe ich meine IP vom server (einmal mit und einmal ohne Port) eingetragen. Aber das Script meint, der Server wäre nicht darauf gebinded. Woran liegt das?
    mfg


    Ehm...poste doch mal die Fehler und schau ob das vom Script aus ausgegeben wird und wenn ja...wo und lösch das doch einfach?! :rolleyes:

    Versuche es mal so:


    if(!strcmp(cmdtext,"/sperrcar",true)) {
    if(SpielerInfo[playerid][sMember] != 18) return SCM(playerid,0xFF0000FF,"Du bist kein Ordnungsamtmitglied.");
    tmp = strtok(cmdtext,idx);
    if(!tmp[0]) return SCM(playerid,0xFF0000FF,"{33CCFF}FEHLER:{FFFFFF} /sperrcar [Kennzeichen] [Preis] [Grund]");
    new kz[32];strcat(kz,tmp,32);
    if(!KZExistiert(kz)) return SCM(playerid,0xFF0000FF,"Dieses Kennzeichen wurde nicht registriert.");
    tmp=strtok(cmdtext,idx);
    if(!tmp[0]) return format(string,128,"{33CCFF}FEHLER:{FFFFFF} /sperrcar %s [Sperrpreis] [Grund]",kz),SCM(playerid,0xFF0000FF,string);
    new preis = strval(tmp);
    if(preis < 1) return SCM(playerid,0xFF0000FF,"Der Sperrpreis darf nicht unter 0 sein.");
    tmp=strtok(cmdtext,idx);
    if(!tmp[0]) return format(string,128,"{33CCFF}FEHLER:{FFFFFF} /sperrcar %s %d [Grund]",kz,preis),SCM(playerid,0xFF0000FF,string);
    new grund[128],kzveh = GetCarFromKZ(kz);strcat(grund,tmp,128);
    if(IsDtCarGesperrt(kzveh)) return SCM(playerid,0xFF0000FF,"Dieses Fahrzeug ist bereits gesperrt.");
    new modell = GetVehicleModel(kzveh),gpid = GetOwner(kzveh),gpidname[MAX_PLAYER_NAME],pnn[MAX_PLAYER_NAME];
    GetPlayerName(gpid,gpidname,sizeof(gpidname));
    format(string,sizeof(string),"Du hast das Kennzeichen %s (User: %d || Name: %s || Fahrzeug: %s) für %d€ mit folgendem Grund gesperrt: %s",kz,gpid,gpidname,CarName[modell-400],preis,grund);
    SCM(playerid,0x00FFFFFF,string),GetPlayerName(playerid,pnn,sizeof(pnn));
    format(string,sizeof(string),"%s hat dein Fahrzeug %s mit dem Kennzeichen %s für %d€ mit folgendem Grund gesperrt: %s",pnn,CarName[modell-400],kz,preis,grund);
    for(new x;x<MaxVeh;x++) if(!strcmp(PlayerCar[gpid][x][CarNumber],kz,true)) PlayerCar[gpid][x][CarGesperrt] = 1,PlayerCar[gpid][x][CarSperrpreis]=preis;
    return SCM(gpid,0xFF0000FF,string);
    }


    Wenn jetzt da steht: Server Unknown Command...dann check mal deine Funktionen mit nem Print-Debug oder hau mal das Crashdetect Plugin rein ;)


    mfg. :thumbup:

    Also um dieses Problem zu lösen, gibt es mehrere Möglichkeiten.


    Zum einen, kannst du eine Funktion (es heißt Funktion, nicht stock) verwenden, allerdings müsstest du dann mit Argumenten arbeiten, wie du schon festgestellt hast ;)


    Wenn man das noch mit OP Code verbindet, kannst du z.B. eine gute Funktion dafür schreiben:


    Spoiler anzeigen
    stock SCM(playerid, color, fstring[], {Float, _}:...) {
    new n = numargs() * 4;
    if (n == 3 * 4) return SendClientMessage(playerid, color, fstring);
    new message[128],arg_start,arg_end,i = 0;

    Spoiler anzeigen
    #emit CONST.pri fstring
    #emit ADD.C 0x4
    #emit STOR.S.pri arg_start

    Spoiler anzeigen
    #emit LOAD.S.pri n
    #emit ADD.C 0x8
    #emit STOR.S.pri arg_end

    Spoiler anzeigen
    for (i = arg_end; i >= arg_start; i -= 4) {
    #emit LCTRL 5
    #emit LOAD.S.alt i
    #emit ADD
    #emit LOAD.I
    #emit PUSH.pri
    }

    Spoiler anzeigen
    #emit PUSH.S fstring
    #emit PUSH.C 128
    #emit PUSH.ADR message
    #emit PUSH.S n
    #emit SYSREQ.C format
    i = n / 4 + 1;
    while (--i >= 0) {
    #emit STACK 0x4
    }
    return SendClientMessage(playerid, color, message);
    }


    Allerdings kann man es wie oben schon genannt auch noch anders lösen, eine alternativ Funktion wäre:


    http://forum.sa-mp.com/showthr…ientMessageEx#post1189734


    oder du nutzt ein Makro:


    new buffer[144 + 1];
    #define SCM(%0,%1,%2,%3) format(buffer, sizeof(buffer),%2,%3) && SendClientMessage(%0, %1, buffer)


    Alternativ kannst du aber auch noch Plugins benutzen:


    [ PLUGIN ] Better Format


    mfg. :thumbup:

    Wie kann ich es dann lösen?


    Naja, du müsstest dir ein Programm in C# oder C++ oder Java oder what ever schreiben und dann könntest du den Prozess filtern und z.B. SendKeys verwenden um deine Login-Daten die du als String o.ä. gespeichert hast dort dann einzugeben.


    Aber du musst das Rad nicht neu erfinden, google doch einfach ein wenig, da gibt es bestimmt schon "Auto-Login" Clients für League of Legends ^^


    mfg. :thumbup:

    Nun, dass League Of Legends und TeamSpeak³ geöffnet werden kannst du ganz einfach machen mit z.B. Diesem Code:


    Code
    start "" "C:\Riot Games\League of Legends\lol.launcher.exe"
    start "" "C:\Program Files\TeamSpeak 3 Client\ts3client_win64.exe"


    Musst dann halt evtl die Pfade anpassen ;)


    Dass mit den Login-Daten kannst du über eine Batch Datei nicht lösen ;)


    mfg. :thumbup:

    Selbst wenn die DrawDistance zu hoch eingestellt sein sollte, bedenke, dass die StreamDistance auch noch eine Rolle spielt.
    D.h. ist das Objekt nicht eingestreamt, wird die "DrawDistance" auch nicht "beachtet"


    Jap...sry mein Fehler, ich rede natürlich von der StreamDistance ^^

    Joa, schreib es so:


    public SpielerSpeichern(playerid)
    {
    if(IsPlayerNPC(playerid) || !Spieler[playerid][pEingeloggt])return 1;
    format(longquery,sizeof(longquery),"UPDATE `accounts` SET `Admin`='%i',`Level`='%i',`Geld`='%i',`Skin`='%i',`Hanfsamen`='%i',`Kokssamen`='%i',`LSDsamen`='%i',`Fraktion`='%i',`Leader`='%i',",Spieler[playerid][pAdmin],Spieler[playerid][pLevel],Spieler[playerid][pGeld],Spieler[playerid][pSkin],Spieler[playerid][pHanfsamen],Spieler[playerid][pKokssamen],Spieler[playerid][pLSDsamen],Spieler[playerid][pFraktion],Spieler[playerid][pLeader],Spieler[playerid][pAccountID]);
    format(longquery,sizeof(longquery),"%s`Rank`='%i',`MuteTime`='%i',`Muted`='%i',`Banned`='%i',",longquery,Spieler[playerid][pRank],Spieler[playerid][pMuteTime],Spieler[playerid][pMuted],Spieler[playerid][pBanned]);
    format(longquery,sizeof(longquery),"%s`Death`='%i',`Totx`='%f',`Toty`='%f',`Totz`='%f',`Totint`='%i',`Totvirtual`='%i',`Deathtime`='%i',",longquery,Spieler[playerid][pDeath],Spieler[playerid][tot_x],Spieler[playerid][tot_y],Spieler[playerid][tot_z],Spieler[playerid][tot_int],Spieler[playerid][tot_world],Spieler[playerid][pDeathTime]);
    format(longquery,sizeof(longquery),"%s`Prison`='%i',`PrisonTime`='%i',`Geschlecht`='%i',`Age`='%i',`Letzte_X`='%f',`Letzte_Y`='%f',`Letzte_Z`='%f',",longquery,Spieler[playerid][pPrison],Spieler[playerid][pPrisonTime],Spieler[playerid][pSex],Spieler[playerid][pAge],Spieler[playerid][LastInGamePos_x],Spieler[playerid][LastInGamePos_y],Spieler[playerid][LastInGamePos_z]);
    format(longquery,sizeof(longquery),"%s`Letzte_Interior`='%i',`Letzte_VirtualWorld`='%i' WHERE `AccountID`='%i'",longquery,Spieler[playerid][LastInGamePos_int],Spieler[playerid][LastInGamePos_world],Spieler[playerid][pAccountID]);
    mysql_function_query(db,longquery,false,"","");
    return 1;
    }


    Dann sendet der nur 1nen Query an die Datenbank anstatt 5 ^^


    PS: longquery, sollte einen Array von so ca. 600 haben... :D


    mfg. :thumbup:

    Beim Zivispawn, wo ebenfalls von meinem Freund gemappt wurde sind es 716 und bei der Fahrschule tatsächlich 999.


    Dann nutzt du entweder noch in deinem Script CreateObject...nutze wirklich überall CreateDynamicObject (auch in Filterscripts etc)


    Oder du hast die StreamDistance bei manchen Objekten zu hoch eingestellt, so dass man sie von überall aus sehen kann...bzw in dieser Reichweite.


    Oder die Fahrschule ist einfach wirklich schlecht gemappt und es sind mehr als 1000 Objekte auf einem Fleck :rolleyes:


    mfg. :thumbup: