Beiträge von IPrototypeI

    Guten Tag ihr kennt ja alle diese stunt server wo man sein auto nicht schrotten kann also wo es immer wieder heile geht
    wie kann ich sowas scripten ist das mit ne schleife und ein timer oder wie hat da zufällig jemand ein code für mich ? ^^


    Ja du kannst das über einen Timer machen oder
    OnUnoccupiedVehicleUpdate


    oder sollte auch gehen


    OnVehicleDamageStatusUpdate


    jedoch musst du hier nichtnur das Leben das Fahrzeuges neu setzen sondern auch äußerlich reparieren
    mit RepairVehicle(vehicleid)

    Ich brauche hilfe mit Mysql R7.
    Bei mir kommt ein Error wen ich den Server starte.
    Wp_Hash ist nicht regestiert.
    Ich denke es besteht irgendwie keine Verbindung zur Datenbank.


    Nein eigentlich nicht du benutzt das Whirlpoolplugin so sollte auch im skript das native oder in einer include das native von Whirlpool drinne stehen
    native WP_Hash(buffer[], len, const str[]);


    Wie sieht es aus mit dem setzten der SpawnInformationen du könntest diese sogar setzten nach dem login mit SetSpawnInfo.
    Es gibt genug möglichkeiten nur denk ich das du ihrgend wo den skin wieder veränderst



    Bitte schau dir nochmal an was an fraktion übergeben wird dan hast du auch des Rätsels Lösung.
    Ich geb mal ein Tipp noch dazu sollte dies nicht verändert werden so bleibt der wert fraktion = 0;
    Also 0 wie du es geschrieben hast

    Aus dem Text geht leider nicht hervor was du genau aufrufen willst generel eine Funktion oder die Anweisung welche sich unter einem command befindet.


    Genereller Aufruf von Funktionen(publics)
    Geht mit CallLocalFunction oder CallRemoteFunction oder einfach den namen der funktion schreiben und den syntax füllen.


    Also:

    FuncTest()
    {
    return 1;
    }


    OnGameModeInit()
    {
    FuncTest();
    ....


    Der aufruf der funktion mit den oben genannten Funktionen wie CallLocalFunction oder CallRemoteFunction je nach dem generel wenn du keine Functionen aus ihgrend einem
    filterskript aufrufen willst benutzt man CallLocalFunction ist schneller als den namen rein zu schreiben zu dem giben beide aufruf möglichkeiten den wert zurück welcher bei der
    Funktion zurück gegeben wird. Man kann dennoch unterteilen in Hauptfunktionen die mit public deklariert wurden oder Nebenfunktionen meist mit stock deklariert.
    Stock gibt dem kompiler nur die anweisung das etwas nicht mit kompilt wird sollte es nicht genutzt werden.


    Bei Commands also OnPlayerCommandText kannst du bei der if abfrage den Operator || benutzten also oder.
    Bei den commandprozessoren kannst du die jeweilige funktion auch mit CallLocalFunction aufrufen darauf basieren die meisten.
    Da commandprozessoren bei diesem prinzip aufbauen da dies auch schneller ist als die ganzen if abfragen bei OnPlayerCommandtext durch zu gehen.


    Weiter möglichkeit ein Funktion aufzurufen mit dem selben nahmen nur einer anderen Funktion ist mit state zu arbeiten. Auch genannt automatons.




    beispiel1() <status:an>
    {
    return 1;
    }
    beispiel1() <status:off>
    {
    return 1;
    }


    OnGameModeInit()
    {
    state status:on
    beispiel1();
    ....


    Ich hoffe damit wurde deine Frage beantwortet , sollte es dennoch der Fall nicht sein kannst du dies ja drunter posten


    bei stock muss überhaupt kein forward vorkommen, liegt warsch. daran das i-etwas schon "split" heißt


    Nein muss man nicht :D man kann es aber es ging ja eigentlich darum warum dieser error entsteht.
    zum beispiel von mein eine Nebenfunktion mit eine Tag deklariert wie Float: bool: etc kann man forward benutzen oder man verschiebt die funktion einfach nach oben.
    Stock sagt eigentlich lediglich aus ob die Nebenfunktion oder variabel etc nicht genutzt wird es nicht mit kompilt wird und es entfernt natürlich auch paar "nervige" Warnings mit der nicht nutzung von variabeln oder Nebenfunktionen etc....

    Folgender Error:
    " error 025: function heading differs from prototype "
    Und die passende Zeile:
    " stock split(const strsrc[], strdest[][], delimiter) "


    @[DT]Beavis: und ich haben keine Ahnung mehr, wie man den Error jetzt wegkriegt ^^


    du hast ein forward in deinem skript welches anders ist vom Syntax als die funktion die du mit stock deklariert hast.


    Beispiel:
    forward split(const strsrc[], strdest[][], delimiter[]) ;
    stock split(const strsrc[], strdest[][], delimiter)


    oder bei einer doppelten unterschiedliche deklaration von split jedoch meist im zusammenhang mit der error das diese funktion schon existiert

    Ja hast Recht das das ende des string '\0' in 25 rein geschoben wird und der name vom spieler in die 24 Zeichen.
    Da war gerade auf dem Holzdampfer dennoch ist es interessant das es auch nur mit MAX_PLAYER_NAME geht ohne das zusätzliche Zeichen

    Edit: Bäm geht doch xD


    das mit der Variable hab ich gemacht, weils für mich übersichtlicher aussieht


    Aber GetPlayerName gibt max 24 Zeichen zurück also brauch ich da kein +1 machen ;) MAX_PLAYER_NAME = 24 + '\0' = 25



    Nope ^^ ja MAX_PLAYER_NAME kann 24 Zeichen enthalten 23 + \0 :D

    Wie gesagt ich würde es auch eher über gettime lösen ;) aber über gettickcount ist es einfacher für Einsteiger


    hm man kann sich jetzt darüber streiten du musst bei beidem werte dazu rechnen beim einen sind es sogar millisekunden(gettickcount ) beim anderen Sekunden ^^ (gettime)


    _______________________________________
    @ EloGamer
    links(5) ist kleiner als rechts(6)
    5 < 6


    links(6) ist größer als rechts(5)
    6 > 5


    :D du hast nur die definition bei OnPlayerCommandText vergessen.


    Aber mal eine rein retorische Frage warum speicherst du den wert den strlen zurück gibt in eine variabel anstatt diese gleich zu verwenden.
    genau so wie das erhöhen der größe des deklarierten strings um 1 wenn auf 24 und verwendest dies nichtmal bei GetPlayerName ^^.

    oder mach es mit gettickcount :D lastrob = GetTickCount();


    und wenn er robt fragst ab ob ( (lastrob + 360000) < GetTickCount()) ist :D


    Ich würde da eher zu gettime tendieren da diese funktionen den timestamp returnt besser gesagt die zahl der sekunden von Januar 1970.
    Aber das ist ja auch wurst. Wenn dieser wert gespeichert wird ist natürlich gettime vorteilhaft da GetTickCOunt die Zeit geturnt seit dem der Server on(gestartet wurde) ist.


    stock ConvertToMinutes (sec) return (sec/60);
    von sekunden zu minuten


    stock ConvertToMinutes (sec) return (sec/60000);
    von milisekunden zu sekunden ist natürlich mit % möglich das genauer auszugeben wenn man will also noch die sekunden , oder milisekunden jedoch muss dan ein string zurück gegeben
    werden


    Wie gesagt sind es 128 Zellen, die 512 sind nicht die Zellen sondern die "Bytes".
    LG


    Ich beziehe mich nur auf
    SA:MP. Note the 'text I/O' value - that is for the text that is sent to the client, and that is used on OnPlayerCommandText.


    und noch was du kannst zwar nur 128 Zeichen schreiben was auch umgehbar ist durch ein kleinen trick dennoch wenn man ins wiki schaut und es selbst austestet



    Zitat

    const message[] The text you would like to display. max len displayable: 144


    http://wiki.sa-mp.com/wiki/SendClientMessage
    die aussage stimmt nicht ganz es kann +/- 144 Zeichen sein


    Nun gut das geht nicht du kannst den bot nur in einer virtuellen welt anzeigen lassen jeweils.
    ^^
    Es kommt natürlich ganz drauf an was du genau machen willst wenn du die im BSN benutzen willst wie im singelplayer ist das auch anders möglich.
    SetPlayerShopName
    http://wiki.sa-mp.com/wiki/SetPlayerShopName_DE


    //edit


    dennoch würde es gehen wenn du den bot so gesehen einstreamen lässt aber der ist auch dann immer nur in einer virtuellen welt sichtbar ^^

    Du kannst nur eine Maximaleanzahl an Zeichen im chat ausgeben wenn ich mich nicht täusche waren dies 144 zeichen.
    Da bringt ein 512 großer string auch nix. Wenn du wirklich so viele Zeichen ausgeben willst musst das in mehrere steps machen also SendCLientMessage mit Elementen des gesamt string ausgeben

    Danke für die Antwort!

    Ja das ist mir bewusst. Deswegen Frage ich dazu ja auch, ob es ein Plugin gibt, wo dies nicht der Fall ist. Ich habe mich letztens mal mit der Plugin Entwicklung beschäftigt und ich denke schon, dass es möglich wäre (z.B. durch Memory Hacking). Aber ich bin da auch noch nicht so der Experte. ^^


    EDIT: Push


    Um sich nochmal auf den zweiten punkt zu beziehen sowas geht siehe generel an Samp Extension. Es ist möglich solche Bots zu erschaffen wie im single Player dennoch haben die
    den Bug das diese im 24/7 crashen. Dennoch ist der Vorteil das man die Ki von GTA Sa nutzen kann somit sind diese intelligent.


    Zur ersten Frage doch das ist möglich ^^
    mit SetPlayerVirtualWorld sogar.


    Und generel das RNPC plugin ist eigentlich nicht schlecht hab dennoch damit noch nicht gearbeitet jedoch bietet es paar funktionen welche dem npcsystem fehlen
    und mit paar weitere plugins kann man damit auch ganz cool Sachen machen.