Beiträge von Andosius

    Hey, danke für die schnelle Antwort.
    Ich muss dir leider gestehen, dass ich auf dieser Seite schon war und es mir keinen richtigen Durchblick gebracht hat. Eher mehr Verwirrung als Erklärung.


    Mein Ziel ist folgendes:
    -Event
    ->Abfrage ob eine Taste gedrückt wurde
    ->> (ab hier kann ich den Rest) mit der Taste als String eine Funktion aufrufen und die Taste als Signal für Aufrufe weiter verarbeiten.


    Stell's dir wie ein Keybinder für SAMP vor, ich drücke eine Taste und will eine Funktion betonen.
    Multi-Keys sind Banane, das lerne ich dann irgendwann - falls es irgendwann nötig sein sollte - dazu. :P
    Genau das ist mein Ziel, habe aber keine Ahnung wie ich das umsetzen soll.


    Gruß.


    Edit//
    Na super, gerade fündig geworden.
    https://www.teialehrbuch.de//K…726-Tastatureingaben.html


    Trotzdem danke, ;)

    Hey,


    ich möchte bestimmte Aktionen auf eine Keyboard-Taste legen, weiß aber leider nicht im geringsten wie ich bei dem Thema vorgehen soll.


    Gedacht habe ich es mir so ähnlich: Ich drücke F1; F1 führt eine Funktion die ich vorher erstellt habe aus.
    Mir wäre wichtig, dass ich den Key als String in der Klasse zurück erhalte. Möchte nicht viel SchnickSchnack rein stopfen. :P


    Bestimmte Schlüsselwörter in einer Kombination wären super.
    Bin seit 13 Uhr nebenbei am suchen und bin so langsam am verzweifeln, da mir die Threads in anderen Foren oder auf anderen Websites nicht im Geringsten helfen.


    Hoffe, dass mir jemand helfen kann... :S


    Gruß.

    Er will den Chat auslesen. :P

    Eine API (UDF 0.3.7) wird für GetChatLine benötigt, du musst ein Timer erstellen, der diesen Prozess alle X-Millisekunden wiederholen und den String-Inhalt prüfen.


    Wenn du mir mehr Informationen und ChatLogs dazu gibst, kann ich dir helfen.

    Darf ich fragen warum?

    Klar,


    es nimmt zusätzliche Ressourcen für einen Wiedergabewert ein, den man auch über das "kleinere" Verfahren herauskriegen kann.
    Ist in meinen Augen übersichtlicher und kompakter, ist aber im Endeffekt Geschmackssache.


    Es geht ja schließlich um eine X-Zahl. :P

    format(query,sizeof(query),"SELECT COUNT(besitzer) FROM hanf WHERE besitzer = '%s') ",SpielerName(playerid));


    format(query,sizeof(query),"SELECT COUNT(besitzer) FROM hanf WHERE besitzer = '%s' ",SpielerName(playerid));

    Das würde ich aber lieber per MySQL-Query und seiner Cache-Funktion machen.
    Da ist ein neues Public dafür in meinen Augen relativ ungeeignet (sofern R33+, keine Ahnung mehr inwiefern sich diese unterscheiden).


    Sprich:

    new Cache:result = mysql_query(verbindungsid,query,true);

    Dann einfach den Inhalt auslesen und mit cache_delete(result); den Speicher bereinigen. :)

    Hey, das liegt daran, dass der Inhalt oben wahrscheinlich in einem Timer steht.
    Wird der Timer mehrfach aufgerufen, wird der Timer auch mehrfach gestartet.
    D.h. du musst dafür Sorge tragen, dass der Timer wirklich nur 1x gestartet wird.


    z.B.

    new Float:bhealth;
    GetPlayerHealth(playerid, bhealth);
    if(bhealth > 6.0)
    {
    TextDrawHideForPlayer(playerid,VERLETZT);
    TextDrawShowForPlayer(playerid,Ts3);
    TextDrawShowForPlayer(playerid,TsIp);
    KillTimer(Verletzttimer[playerid]);
    SetPVarInt(playerid,"verletzt_timer",0);
    }
    else if(bhealth < 6.0 && GetPVarInt(playerid,"verletzt_timer") != 1)
    {
    LoopingAnim(playerid, "SWEET", "Sweet_injuredloop", 2.5, 1, 0, 0, 0, 0); // Dieing of Crac
    RemovePlayerFromVehicle(playerid);
    TextDrawShowForPlayer(playerid,VERLETZT);
    TextDrawHideForPlayer(playerid,Ts3);
    Verletzttimer[playerid] = SetTimerEx("verletztsein",60000,0,"i",playerid);
    TextDrawHideForPlayer(playerid,TsIp);
    SetPVarInt(playerid,"verletzt_timer",1);
    }


    E: Was heißt wahrscheinlich, OnPlayerUpdate kann mehr als 10x pro Sekunde aufgerufen werden. xD



    Gruß.

    @iEnerqie


    Dies habe ich für die Sprunkautomaten auch gemacht.
    Ich habe das ganze so gelöst:


    C
    if(GetPlayerAnimationIndex(playerid)){
            new animlib[32], animname[32];
    	GetAnimationName(GetPlayerAnimationIndex(playerid),animlib,32,animname,32);
    	if(strcmp(animname,"VEND_USE",true) == 0){
    		TogglePlayerControllable(playerid,0);
    		TogglePlayerControllable(playerid,1);
    		return SendClientMessage(playerid,-1,"Du kannst dir hier kein Getränk kaufen!");
    	}
    }

    Danke, habe es aber etwas anders gelöst. ^^

    if(!strcmp(animlib,"VENDING",true)){
    if((GetPVarFloat(playerid,"health") - health[0]) != 35.0)
    SetPVarFloat(playerid,"health",health[0]+35.0);
    }

    Brauchte das für mein Anti-Cheat. :)
    Empfehle dir aber das ebenfalls mit "animlib" zu machen, da es verschiedene VEND_USE-Arten gibt. ^^

    Naja, wurde es offiziell nicht. Es gab wohl Leute die es ohne Erlaubnis weitergegeben haben, aber das war es auch schon.

    Soweit ich mich erinnere wurde das Script verkauft und dann von Team-Mitgliedern veröffentlicht.
    Schade wenn man beachtet, wie viel Mühe dahinter steckte. ;)