Beiträge von .#~Momo

    Dazu gibt es eine schöne Funktion.


    stock IsRPName(const name[], max_underscores = 2)
    {
    new underscores = 0;
    if (name[0] < 'A' || name[0] > 'Z') return false;
    for(new i = 1; i < strlen(name); i++)
    {
    if(name[i] != '_' && (name[i] < 'A' || name[i] > 'Z') && (name[i] < 'a' || name[i] > 'z')) return false; // a-zA-Z_
    if( (name[i] >= 'A' && name[i] <= 'Z') && (name[i - 1] != '_') ) return false; // indokolatlan nagybetű használata
    if(name[i] == '_')
    {
    underscores++;
    if(underscores > max_underscores || i == strlen(name)) return false; // Több aláhúzás mint a max, vagy aláhúzás az utolsó karakteren
    if(name[i + 1] < 'A' || name[i + 1] > 'Z') return false; // Aláhúzás után nem nagybetű következik
    }
    }
    if (underscores == 0) return false; // Nincs benne aláhúzásjel
    return true;
    }


    Alternativ würde ich ein RegEx Plugin verwenden, damit hast du mehr Möglichkeiten und dass ganze verläuft viel schneller, eine Maske mit RegEx würde zum bsp so aussehen:


    #define IsValidRpName(%1) \
    regex_match(%1, "([A-Z]{1,1})[a-z]{2,9}+_([A-Z]{1,1})[a-z]{2,9}")


    Beide Codes sind aus dem Englischen SA-MP Forum.

    Viel einfach und ressourcenschonender ist es so den Chat zu clearen, statt 1000 mal SendClientMessage reinzu schreiben


    for(new i =0;i<100;i++)
    {
    SendClientMessageToAll(ROT,"");
    print("Chat cleared.");
    }



    Ob du jetzt 5x hintereinander SendClientMessage(...) aufrufst oder in einer Loop die 5 mal durchläuft, das macht keinen Unterschied, die Funktion wird in beiden Varianten gleich aufgerufen, da ist nichts mir Ressourcen schonender, es sieht Script Technisch gesehen einfach besser aus, wenn man eine Schleife benutzt.

    Guten Tag,


    ich habe vor ungefähr 2 Moanten eine API für SA-MP Entwickelt mit der es möglich ist einen Text Direkt an den Server zu senden, die Funktion ist sehr nützlich für Keybinder, da meine API sehr beliebt wurde/ist habe ich diese natürlich stets weiter entwickelt, nun hat meine API über 60 Funktionen die alle sehr Nützlich sind und bietet sogar die möglichkeit etwas im eigenen Spiel zu Zeichnen.


    Ich will natürlich nicht jede Funktion hier erklären, deshalb schaut euch am besten mal folgende Seite an: http://samp-api.net/index.php/Funktionen


    Die Hauptseite erreicht ihr unter: http://samp-api.net/


    Die API ist mit Autohotkey Kompatible, die API kann ebenso für Visual Basic, CSharp, C++ genutzt werden.


    Meine API wird ständig weiter Entwickelt und unterstützt auch die Aktuelle SA-MP Version 0.3e.

    Hallo, ich würde dir meine API für SA-MP 0.3e Empfehlen ( Die UDF unterstützt SA-MP 0.3e nicht mehr und wird so viel ich weiß auch nicht mehr weiter Entwickelt ), dort sind 2 Funktionen vorhanden mit denen du den Aktuellen Ort und die Stadt auslesen kannst.


    Ort-Funktion: http://samp-api.net/index.php/GetZoneName
    Stadt-Funktion: http://samp-api.net/index.php/GetCityName


    Meine API hat natürlich viel mehr Funktionen für GTA & SA-MP 0.3e, guck dir einfach mal die Funktionsliste an: http://samp-api.net/index.php/Funktionen


    Meine API ist noch nicht sehr bekannt, habe dieses Projekt erst vor 2 Monaten gestartet, aber es ist dennoch sehr beliebt auf grp / srp, habe es aber eins nur für GRP Entwickelt, da ich aber nun dieses Projekt Allgemein Veröffentlichen will, dachte ich mal, dass ich mal ein bisschen Werbung mache.


    Tutorial zur Benutzung meiner API findest du hier: http://www.samp-api.net/index.php/Tutorial


    Falls probleme Auftreten sollten: http://samp-api.net/index.php/FAQ


    Besuch einfach mal das Forum von meiner API, dort bekommst du direkten Support dafür.


    PS: Beispiel Script für AHK:


    stock SaveGame()
    {
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    SavePlayer(i);
    SendAdminMessage(cGelb, "Die Accounts wurden gespeichert.");
    //return 1;
    }
    return 1;
    }



    Deine SendAdminMessage ergibt iwie keinen Sinn... Überleg mal warum...

    Ich gebe dir mal einen kleinen Denkanstoß...


    Sobald der Spieler stirbt setzt du eine Variable auf True, sobald der Spieler Spawnt prüfst du ob die Variable auf True ist, Wenn ja setzt du die Position des Spielers neu, setzt die Kamera Position, frierst den Spieler ein, startest einen Timer der bis XX Sekunden zählt, wenn die Zeit um ist setzt du die Kamera wieder hinter den Spieler, ent-frierst ihn wieder und gibst eine neue Position an. Vergiss aber nicht die Variable wieder auf False zu setzen.

    Ich sehe gerade nicht was den Crash verursacht.


    Ich gebe dir mal einen guten Tipp damit du raus finden kannst was den Crash verursacht.


    Füge einfach vor jeder Zeile folgendes hinzu:


    Printf("[Debug] Linie: 1");


    Die Zahl erhöhst du immer nach jeder Zeile, sobald du fertig bist starte den Server neu und führe den Befehl aus, wenn der Server jetzt crashen sollte geh einfach in deiner SA-MP Log Datei und guck welche Zahl er zu letzt geschrieben hat, somit weißt du wenigstens schon einmal was den Crash verursacht.

    Also "Schneler" kannst du dein Internet selber nicht mehr machen eher "Lamsanger" ...


    Spaß beiseite...


    Guck einfach ob bei dir Kabeldeutschland oder Unitymedia verfügbar ist, die beiden Anbieter gehen nicht über der Telefonbuchse sondern gehen über deinem TV-Kabel Anschluss und halt dich fest, es kommt die VOLLE LEISTUNG an, nicht wie bei dem Telefonanschluss.


    Ich selber habe eine 32.000 Leitung bestellt mit 2000 MBits Upload und es kommen hier ca 32.180 MBits Download - 2100 Mbits Upload an, sogar mehr wie ich bestellt habe. :thumbup:


    Bei einer herkömmlichen Leitung kommen von einer 16.000 Leitung Maximal 14.000 an da die Leitung das Signal extrem abbremst...


    Also ich kann dir für schneller Internet nur Kabeldeutschland oder Unitymedia empfehlen.

    Wie viel willst du maximal ausgeben?


    Es gibt ja verschiedene Klassen für Systeme...


    Low Gaming - bis 300€
    Fair Gaming - bis 600€
    Good Gaming - bis 1000€
    und Highend Gaming - bis ... €


    Ich denke mal da du dir einen Wasser gekühlten Computer holen willst hast du vor zu übertakten? wenn nicht bringt die Wasserkühlung recht wenig außer dass dein PC leise ist... So eine Wasserkühlung ist halt eine menge Aufwand im puncto Pflegung & Wartung.

    Ich habe es nicht nötig andere Leute blöd anzuschreiben, nur wenn ich so was lese, bekomme ich regelrecht das Kotzen!


    Hättest du wirklich nur ein bisschen Ahnung von If abfragen, Variablen und das Aufrufen einer Funktion hättest du das ganze schon gelöst, so etwas lernt man schon am ersten Tag wenn man sich mit der Programmierung beschäftigt.


    Ich bin heute mal so Nett...


    stock Attach3DStringToPlayer(playerid, string[], color, Float:Range, Float:OffsetX, Float:OffsetY, Float:OffsetZ)
    {
    new PlayerText3D:_TEXT;
    _TEXT = CreatePlayer3DTextLabel(playerid, string, color, OffsetX, OffsetY, OffsetZ, Range);
    Attach3DTextLabelToPlayer(_TEXT, playerid, 0.0, 0.0, 0.0);
    return: False[0];
    }


    Du rufst dann einfach die Funktion auf... Wie das geht wirst du ja wohl wissen.

    Bevor du das machst, Lerne erst einmal wie du in Pawn Programmierst, ich denke keiner wird dir einfach so einen Code hinklatschen damit du es einfügst und im Endeffekt 0 plan hast, was du überhaupt gemacht hast.

    Leute, ich weiß das mein Post nicht gerade zum Thema passt, aber warum benutzt ihr noch die alten Funktionen?


    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' '))
    {
    idx++;
    }
    new offset = idx;
    while ((idx < length) && ((idx - offset) < (sizeof(grund) - 1)))
    {
    grund[idx - offset] = cmdtext[idx];
    idx++;
    }

    Macht eucht doch eine Globale Funktion wo ihr immer die Ausgabe mittels Return zurück bekommt, aber kopiert diesen Abschnitt doch nicht in jedem Befehl rein, damit verbraucht ihr Platz wie sonst was oder steigt auf "sscanf" um! Es ist wesentlich schneller und einfacher zu bedienen!