Beiträge von Kaliber

    Oder noch kürzer geschrieben:


    if(!strcmp("/open", cmdtext, true)) // Befehl zum öffnen
    {
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,Rot,"Du bist kein Admin!");
    if(!IsPlayerInRangeOfPoint(playerid,10.0,1003.88, -643.33, 123.49)) return SendClientMessage(playerid,Rot,"Du bist nicht in der Nähe!");
    MoveObject(tor,1003.88, -643.33, 113.78, 4); // Wenn >Ja<, dann öffnet das Tor
    SendClientMessage(playerid,Rot,"Das Tor schließt in 5 Sekunden automatisch.");
    SetTimer("close", 5000,0); // Timer
    return 1;
    }


    mfg. :thumbup:

    lass doch das format doch bitte weg ja Kaliber und reduziere die buffer string zu dem gebe bei dem nächsten format doch die string größe an oder benutze doch gleich strcat würde auch bei case schon gehen je nach dem wäre sogar besser und davor immer schön den string leeren


    Ich bevorzuge ja eher strins, aber tut mir leid ich war zu faul das zu ändern und wofür auch, in seinem Script kommt es auf 5 Gute Zeilen auch nicht mehr an wenn 30.000 andere GF-Like sind ^^


    mfg. :rolleyes:

    Hey, danke erstmal für deine Antwort & Hilfe.
    Ich habe die SuFu bentzt und nichts gescheites gefunden.. Es sind eher so einzelne Tutorials wie man z.B. das und jenes erstellt. Ich möchte gerne ein Tutorial wo eher alles im Allgemeinen erklärt ist und dann genauer ins Scripting geht. Wie z.B. die englische Wiki Scripting Seite


    Dann schau dir das mal an: Pawn Einstieg 2.0


    mfg. :thumbup:

    Schreibe deinen Befehl mal so:


    if(!strcmp("/admins",cmdtext,true))
    {
    SendClientMessage(playerid,weis,"Administartoren und Supporter");
    for(new i; i < MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i)) continue;
    new buffer[32],string[64];
    switch(GetPVarInt(i,"Adminrang"))
    {
    case 0: continue;
    case 1: format(buffer,32,"Probe-Supporter");
    case 2: format(buffer,32,"Supporter");
    case 3: format(buffer,32,"Moderator");
    case 4: format(buffer,32,"Super-Moderator");
    case 5: format(buffer,32,"Administartor");
    case 6: format(buffer,32,"Projektleiter");
    }
    format(string,sizeof(string),"%s : %s",buffer,SpielerName(i));
    SendClientMessage(playerid,BLAU,string);
    }
    return 1;
    }


    mfg. :thumbup:

    Lade dir mal die neuste PAWNO version runter und probier es neu


    Das hat nichts mit PAWNO zu tuen !


    Das liegt am Script ^^


    Wahrscheinlich nutzt du das Makro Function und wenn da sowas z.B. steht:


    Function /* Also hier nichts */(playerid) {


    }
    Dann crasht unter anderem der Compiler ;)


    mfg. :thumbup:

    while


    //Edit: moment, willst du alle ausgebe die den Hauskey 4 haben oder was...drück dich echt mal besser aus :wacko:


    Nein, einfach so:


    new string[64],name[25];
    mysql_query("SELECT `Name` FROM `Tabelle` WHERE `Hauskey`='4'");
    mysql_store_result();
    mysql_fetch_row(name);
    mysql_free_result();
    format(string,64,"Der Name lautet: %s",name);
    SendClientMessage(playerid,-1,string);


    mfg. :thumbup:

    public BanWithMessage(playerid)
    {
    new string[258];
    BanEx(playerid, GetPVarString(playerid, "Grund", string, 258)); // Hier soll dan der Grund wieder ausgegebn werden
    return 1;
    }


    Der Fehler liegt hier, dass muss so aussehen:


    public BanWithMessage(playerid)
    {
    new string[128];
    GetPVarString(playerid, "Grund", string, 128);
    BanEx(playerid,string);
    return 1;
    }


    //Edit: und in deinem cmd musst du das so machen:


    SetPVarString(pID, "Grund", reason);
    SetTimerEx("BanWithMessage", 100, true, "i", pID); // Hier wird es im Sting gespeichert


    mfg. :thumbup:

    So:


    new bool:var;


    var = false; //eig unnötig, da der Wert eh auf false ist ^.^
    switch(var) {
    case false: print("false");
    case true: print("true");
    }


    Das würde in diesem Fall natürlich false printen ;)


    mfg. :thumbup:

    So, ich finde hier sollte auch wieder mal was rein und da ich mal wieder Langeweile habe, schreibe ich hier mal ein paar Sachen rein:


    Booleans:
    Wenn eine Variable nur 2 Werte annehmen brauch, sagen wir 0 und 1, dann sollte man anstatt so:
    //Falsche Variante
    new var;


    //In irgendeinem Callback
    var = 1;


    //Unter einem anderen Callback
    if(var == 1)


    Sollte man es so machen:


    //Richtige Variante
    new bool:var;


    //In irgendeinem Callback
    var = true;


    //Unter einem anderen Callback
    if(var == true)
    Das sorgt dafür, dass von Anfang an weniger Speicherplatz für diese Variable verbraucht wird.


    Char Arrays
    Das ist ein Thema was ich wirklich jedem ans Herz lege !


    Jeder kennt folgendes:


    new var[MAX_PLAYERS];


    if(var[playerid] == 1)
    Nun das ist aber verdammt schlecht !


    Jede Zelle bzw Spalte im Array verbraucht 4 Bytes, da MAX_PLAYERS (ohne das Makro zu verändern) eine größe von 500 hat, würde diese Variable:


    Code
    4Bytes * 500Bytes = 2000 Bytes


    verbrauchen !
    Aus diesem Grund sogenannte char-Arrays verwenden, dass sähe dann so aus:


    new var[MAX_PLAYERS char];


    if(var{playerid} == 1) //Vorsicht: Hier { } verwenden anstatt [ ] !!!
    Hier würde jede Zelle bzw Spalte im Array nur 1nen Byte verbrauchen !
    Sprich wir verbrauchen 500 Bytes anstatt 2000 ! ^^


    Wichtig noch zu beachten, das geht nur bei 1 dimensionalen Arrays und auch nur bei Integern, wenn man das mit strings machen will muss man strpack benutzen (aber das ist eine andere Geschichte)...


    Außerdem ist zu beachten, dass nur Werte von 0-255 möglich sind!
    Sprich:


    new test[MAX_PLAYERS char];
    test{0} = 259; //Ist nicht möglich, da größer 255!


    Strings-returnen
    Viele von euch werden wahrscheinlich diese Funktion kennen:


    stock PlayerName(playerid) {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,MAX_PLAYER_NAME);
    return name;
    }
    Nun, hier returnen wir einen string, das führt zu sog. Memory Leaks und sorgt dafür dass euer Speicher unnötig belegt wird, denn diese Variable "name" wird Lokal erzeugt, aber sie wird durch das return nicht wieder "zerstört", somit bleibt der Speicher vorhanden.
    Aus diesem Grund empfehle ich diese Variante:


    //Oben im Script
    new pName[MAX_PLAYERS][MAX_PLAYER_NAME];


    //Unter OnPlayerConnect
    GetPlayerName(playerid,pName[playerid],MAX_PLAYER_NAME);


    //Nutzung:
    format(string,sizeof(string),"Willkommen lieber %s",pName[playerid]);


    Unnötig große Arrays
    Wie oben schon mal angesprochen verbrauchen große Arrays viel Speicherplatz !
    Ich zeige euch mal einige Beispiele die ihr sicher kennen werdet:


    new string[256], string1[300], string2[499]; /* usw... */
    format(string,sizeof(string),"bla...");


    Also abgesehen davon, dass man das meistens eh mit 1ner Variable lösen kann, zeige ich euch nun das:


    new string[] = "Hier euren Text rein...lieber %s",name[] = "Kaliber";
    format(string,sizeof(string)+sizeof(name),string,name);
    print(string); //würde ausgeben: "Hier euren Text rein...lieber Kaliber"


    So das wars erstmal mit dem gröbsten, werde vielleicht noch einen 2. Part dranhängen, mal sehen ^^


    mfg. :thumbup:


    Spoiler anzeigen
    //Edited: Infos

    Du hast da 3x if(response==1) stehen, merkst du selber das da was falsch ist :huh:


    Du musst das so machen wie mit dem 1. Dialog also:


    if(dialogid == DIALOG_Perso_Nachname) {
    format(SpielerInfo[playerid][sName],24,inputtext); //in "inputtext" steht der Text der eingegeben wurde
    }


    mfg. :thumbup:

    Diese 3 Personen würden auf einer Seite in Facebook mit 10.000 Abos landen , um dort noch ein bisschen berühmter zu werden.


    Fine das ja ein bisschen unsinnig, aber okay ^^


    Es ist eigentlich sehr erfeulich das es viel zu viele gute Dinge gibt als das man sagen könnte "Das ist es!"


    Genau das finde ich auch, aus diesem Grund wird es bestimmt schwer, da einen Sieger festzustellen... ^^


    Aber trotzdem, gutes Gelingen ;)


    mfg. :thumbup:

    Nur über eine globale Variable und das nennt man dann auch nicht mehr Parameter :D


    So z.B.


    //Oben im Script
    new test = 0;


    ocmd:bla(playerid) {
    test = 1;
    }


    //Unterm Callback
    if(test==1)


    mfg. :thumbup:

    Habe eine frage kannst du das für mich machen habe schon mehrmals gemacht und klappt nie ,


    wen ja Dan danke


    Wieso nutzt du nicht meine Include :huh:


    3 Zeilen musst du dann nur machen und dein Tor geht auf + zu :rolleyes:


    mfg. :thumbup: