Beiträge von Knolle

    Diese Funktionen sind bereits vorhanden.
    Nichts desto trotz.


    einmal korrekt durchlesen


    Ach herje... ich steige bei solchem nicht gut durch, zu wirr warr das ganze, bevorzuge kleine Funktionen, die nacheinander aufgerufen werden. Sorry.

    Wählst du auch eine Klasse aus bzw. hast du default Spawn Koordinaten?
    Wenn nicht, dann mag es daran liegen, das du die default Spawn Daten nutzt, welche X=0.0, Y=0.0, Z=0.0 sind und du hier unter der Map bist.


    Daher kannst du z.B. die Spawndaten für einen Nutzer direkt beim Connecten einmal zuweisen und dann eben die AddClass bzw. RequestClass Daten verwenden.

    Ich habe gelernt: 26 Errors sind ein starkes Anzeichen für fehlende Klammer, fehlendes Semikolon what ever.
    Schau dir das zuletzt bearbeitete von dir an und du solltest den Fehler finden können.
    Falls das nicht der Fall ist: ermittel mittels Text Editoren (oder was auch immer dir recht ist) die Anzahl von geöffneten sowie geschlossenen Klammern. { }

    hey


    Gibt es ein Maximum für die Spawndisatanz von CreateDynamicCP ?
    Gibt es eine Möglichkeit mehr als 1000 Objekte auf ein Punkt zu erstellen ?

    Zur Zweiten Frage kann ich soviel sagen: jain.
    Möchtest du mehr als 1000 Objekte gleichzeitig sehen, so ist dies nicht möglich, da der Client nicht mehr als 1000 Objekte gleichzeitig gestreamt bekommen kann.
    Allerdings ist es möglich, mit einem Punkt, unzwar mit Areas oder Teams, allerdings ist damit wahrscheinlich nicht deine Frage wirklich beantwortet.
    Andernfalls lautet die Antwort: nein.


    Problem found: liegt an einem Plugin:
    YSF kurtas version (R16)

    Die Meldung kommt, da du ein Fehler hast im Code.
    Sprich es ist unklug diese einfach nur weghaben zu wollen.


    Wann tritt dies auf? Direkt schon beim Connecten, wenn deine playerid irgendwo als index verwendet wird?
    Oder unter einer anderen Aktion, beispielsweise Password eingeben, beim Login.
    Lass gemeinsam das problem angehen und lösen, anstelle von einfach nur mit einer Decke unsichtbar machen. :)

    Moin,


    OLD:



    Gruß
    Knolle



    EDIT:
    http://wiki.sa-mp.com/wiki/MySQL/R33#orm_apply_cache
    Verstehe ich die Funktion korrekt?
    Kann ich z.B. hier ein undefinierten Select ausführen und dann später einfach den Select darein schieben im sinne von:

    Code
    SELECT * FROM ...
    if(cache_get_int_field(0,"permanentBan") == 1) {
         kick(playerid)
    } else {
      orm_apply_cache(R_GetPlayerORM(playerid));
      orm_load(R_GetPlayerORM(playerid)...);
      SendClientMessage(playerid,-1,"daten geladen");
    }


    Gruß
    Knolle

    Falls du überprüfen möchtest, ob eine "E-Mail Adresse" valide ist, sprich Format Konform ist, so kann ich dir ein Plugin ans Herz legen.
    Habe das natürlich auch auf Herz und Nieren geprüft (1.000.000 Durchgänge) und dies ging auch flott von der Hand.
    Es handelt sich hierbei um ein RegEx Plugin. Falls dir das etwas sagt, so kann ich dir das wärmstens empfehlen.


    http://forum.sa-mp.com/showthr…?t=247893&highlight=regex


    So kannst du z.B. mittels einer Include dir Regeln erstellen und easy im normalen Script verwenden.


    "IsValidEmail"
    "IsValidPassword"
    "IsValidWhatever"


    Nur so als Notiz am Rande. :)
    Ich finde es persönlich ganz gut.

    ich habe mal eine Frage bezüglich des MySQL's.
    Frage lautet: Ist es möglich in der MySQL abfrage einzubauen das er prüft ob der Spieler bereits einen Dateneinsatz hat?
    Nicht das alles doppelt drinne ist?


    geht dies oder muss ich anderes vorgehn?
    da bin ich grad etwas übefragt :D

    Nein, du kannst es direkt mit einer einzigen SQL Abfragen erledigen. :)
    Hier der grobe Vorgang (man kann mehrere Varianten verwenden, um ans Ziel zu gelangen. :) )


    Als erstes erstellst du deine Abfrage.
    Danach fragst du mittels den gegeben Funktionen ab, wieviele Zeilen du erhalten hast.
    Und richtest danach deine Bedingung aus.


    if(rows == 1) -> ein datensatz gegeben, keine doppelten
    allerdings wenn z.B.
    if(rows > 1) -> mehrere accounts vorhanden


    Es wäre gut grob zu sagen, was du vor hast.
    Wenn du z.B. damit ein "Account Daten Laden" machen möchtest und das MySQL Plugin Version R35+ verwendest, so kannst du z.B. eine effiziente Variante nutzen, die sogar im Wiki dokumentiert ist.

    Sagen wir, dein Include sieht folgendermaßen aus


    So sieht dann die Include dann mit einem native folgend aus:

    C
    /*
    native FunktionsName();
    */
    stock FunktionsName() {
    	/*
    	hier der Algorithmus, der den Rückgabewert bestimmt
    	*/
    	return 1;
    }

    Die Meldung erhälst du, da du das nicht als Kommentar verfasst hast.
    Dies ist aber von nöten. Warum und weshabl, das steht im Forum sowie im Wiki.
    Wir wollen uns aber nun darauf beschränken.


    Wenn du nun die native so definiert hast, wie in meinem Beispiel, so musst du nur dein Script neu öffnen und der Editor sieht die "native" Zeile und kann sie dann vorschlagen.

    Kleine Randanmerkung:


    Jack, dir ist sicherlich aufgefallen, das du gewisse Funktionen schon mit einem Teiltext vorgeschlagen bekommst, z.B. "GetPla" -> GetPlayerPos.
    Dies entstammt aus dem a_samp include, wo eine Zeile mit
    native GetPlayerPos(playerid,Float:posX,Float:posY,Float:posZ);
    beschrieben ist.
    Und wenn du z.B. in einem include von dir selber eine Funktion hast, aber auch dir so schön vorschlagen lassen möchtest, so muss du dann eine Zeile im Include wie folgt beschreiben
    /*
    native FunktionsName(parameter);
    */
    Hier gibt es aber eine Voraussetzung:
    Die gewünschte Include Datei muss direkt im pawno/include ordner sein, andernfalls ist der Pawno Editor nicht in der Lage, diese Natives auch lesen zu können.

    Beispiel:Wenn er eine Liste von X Clans hat, deren Namen er per Befehl anzeigen will (z.B. Auswahlliste um Details über den Clan zu sehen), dann würde es keinen Sinn machen, jedes mal wenn der Befehl ausgeführt wird die Datenbank anzusprechen, das geht mehr auf die Ressourcen, als die X Clans in ein Array zu speichern, und die Datenbank nur anzusprechen, wenn sich an den Namen etwas ändert.


    Gut, so einen Fall hatte ich nicht bedacht. Ich hat nur den einfachsten Fall im Sinne: Werte im Chat wiedergeben.
    So ein Fall, wie du ihn beschrieben hast, macht natürlich so mehr sinn. :)

    Diese Sektion des Forums bzw. dieser Thread ist eher ein "Ich brauche Support", allerdings würde ich gerne hinterfragen, warum du direkt von der DB die Werte in eine Variable speichern möchtest.
    Ich erkenne den Sinn hier nicht, da man vieles schon z.B. in der DB abarbeiten kann und dies perfomanter ist. Desweiteren sollte man möglichst wenig in das Script hineinladen, um extra/unnötige RAM Nutzung zu minimieren. Gibt da recht gute mittel und wege für.

    Dir mag die zweite Variante erstmal auf Anhieb nicht gefallen, doch sobald du ein sehr großes Enum hast, so hast du es leichter auf jeden Wert zuzugreifen.
    Aber das ist ein anderes Kapitel, welches ich hier nicht aufschlagen werde.

    Hi ich habe ein Checkpoint Lauf System gemacht und wollte nun wissen wie ich die Cp´s wiederholen lassen soll
    Wie mache ich das?

    Als aller erstes wäre es ratsam, die CPs, sofern nicht schon getan, in ein Array zu stecken, wo alle Checkpoints bekannt sind.
    Als nächstes denkst du dir ein Algorithmus aus, wie die Checkpoints ausgewählt werden sollen (random oder nach der reihenfolge).
    Empfehlenswert: Brech soweit es geht alles herunter, sprich
    "GetRandomJailCheckpointID(current)"
    "GetNextJailCheckpoint(current)"
    Bedenke: current ist in meinem Beispiel/in meiner Vorstellung der Index Eintrag vom Array, wo alle CP pos bekannt sind.
    Ergo du musst die ID des CP mMn beim Spieler abspeichern, so das du einen einfacheren zugriff auf die ID bekommst.


    Falls du konkreter wissen willst, wie es aussehen könnte, so lass es das Forum/mich wissen. :)

    Moin.
    Erneut ich. :D


    Hat jemand ein URLEncode Algorithmus (stock function), die auch gut funktioniert? Ich will damit meine GET/POST Parameter sichern, damit meine API auch richtig greift.
    Aber die von DracoBlue sowie die strlib Include funktionieren nicht im krassen ernstfall ("er%_&t6" -> null)

    Moin.


    Ich habe eine Frage an die erfahrenden Scripter.
    Ist es möglich mittels HTTP Requests auch direkt den Server anzusprechen?
    Sprich: ich habe eine public function in meinem Script und schicke ne Anfrage an meinen Server (callremotefunction o.ä.), um was am Server zu triggern.
    Meinetwegen "OnAccountRegistered" wird getriggert, wenn der Benutzer in seiner Bestätigungs Mail den Link anklickt und mein PHP Server gibt diese Information direkt an mein SA-MP Server weiter.


    So wie ich das eben in der letzten halben Stunde recherieren konnte, geht es zurzeit mit dem a_samp Modul nur so, dass das Script eine Anfrage an den Server schickt und dieser ein Callback ausführt.


    Allerdings hilft mir dieser Ansatz keineswegs weiter.


    EDIT:
    Huch, da sucht man etwas anders und findet das hier:
    http://forum.sa-mp.com/showthread.php?t=104299
    Ergo: ist möglich.


    Falls wer suchen sollte, so tage ich kurz paar Stichworte (SEO)

    Ich finde diese Funktion nicht gut wartbar.
    Empfehlswert wären zwei dinge.
    Hinterlege beim Benutzer nur die Informatione, DAS er leader ist.
    Denn in deiner jetzigen art und weise ist es möglich, das ich leader der grove bin, aber beim LSPD Leader.
    Ergo erhalte ich die LSPD Farben. Bin ich umgekehrt Leader der Grove und Member des LSPD, dann das gleiche Spielchen: Farbe der LSPD.


    Desweiteren: Eine Liste, wo jede FraktionsID/TeamID hinterlegt ist sowie die dazugehörige Farbe wäre auch nicht schlecht.
    Dann heißt es später nur noch durch iterieren (for Schleife).


    Erhöht wesentlich die Lesbarkeit.
    Alternative: Ein Switch Case auf die Fraktions/TeamID und dazu dann die Farbe vergeben.



    EDIT: Da war wohl jemand schneller, als ich. Sollte wohl mal schneller den Post verfassen und nicht 20min warten. :D

    Du kannst ja z.B. einen Timer auf dem Server starten, wenn der Server Online ist.




    Dieser rechnet dann bei allen gebannten User durchgängig eine Sekunde ab oder eine Stunde, was auch immer du als Maß nimmst.
    Das Maß bestimmst du z.B. durch den Timer selbst (alle 60sek ausführen lassen -> Minuten in der DB abgespeichert, kannst du selbst einstellen)


    Falls du nicht eine Datenbank verwendest, sondern das auf Dateiebene hast, dann musst du alle Dateien durchgehen und prinzipiel das gleiche tun - Wert erfassen, gewissen Wert abziehen und wieder abspeichern.