Beiträge von ErikSon

    Du solltest das Ganze ja auch auf dein Script anpassen ;)


    Hier mal mein Code: ( eben geschrieben, sollte funktionieren )


    static const Adminname[][] = {"User","Supporter","Administrator","High Administrator","Projektleiter"}; //Beispiel


    #define dAdmins 500


    ocmd:admins(playerid){
    new str[512],buffer[64],p_name[MAX_PLAYER_NAME]; // Eventuell anpassen
    for(new i = 0; i<MAX_PLAYERS; i++){
    if(!IsPlayerConnected(i))continue;
    if(Spieler[i][Admin] <= 0)continue; // "Spieler[i][Admin]" zu deinem anpassen!
    GetPlayerName(i,p_name,MAX_PLAYER_NAME);
    format(buffer,sizeof(buffer),"'%s' %s%c",Adminname[Spieler[i][Admin]],p_name,(i == MAX_PLAYERS) ? '\0' : '\n'),strins(str,strlen(str),sizeof(str));
    }
    if(strlen(str))return ShowPlayerDialog(playerid,dAdmins,DIALOG_STYLE_MSGBOX,"Admins online",str,"Okay","");
    else return ShowPlayerDialog(playerid,dAdmins,DIALOG_STYLE_MSGBOX,"Admins online","Zur Zeit sind keine Admins online!","Okay","");
    }


    Hier musst du eben nur die Adminnamen, die DialogID und die Adminabfrage abändern...

    Es geht, wenn du es definierst, ja ;)


    Um zum Beispiel den Bug zu fixxen, dass der Spieler gekickt wird, aber keine Message bekommt kannst du folgendes machen:

    #define KickPlayer(%0) SetTimerEx ("KickPlayer_T",100, false,"i",%0)
    forward KickPlayer_T(playerid);
    public KickPlayer_T(playerid)return Kick(playerid);


    Dann kannst du 'KickPlayer (playerid)' verwenden, und er bekommt dann auch die Message..


    #Handy

    Wozu denn einen Timer?...


    Wie bereits geschrieben:
    new pHoldingTime[MAX_PLAYERS];
    if(HOLDING(KEY_FIRE))pHoldingTime[playerid] = gettime();
    if((RELEASED(KEY_FIRE)) && (gettime() - pHoldingTime[playerid] >= 8)){//Wenn er die Taste länger als bzw 8 Sekunden gehalten hat, dann
    new string[16];format(string, sizeof string, "%d Sekunden", gettime()-pHoldingTime[playerid]);
    }




    DJ Deagle: Ich weiß, ich habe die gelesen.. Jedoch ist ein Timer unnötig!
    @Post unten

    Hey,
    habe mal eine Frage bezüglich 'CallLocalFunction'..


    CallLocalFunction("_OnDialogResponse","iiiis",playerid, dialogid, response, listitem, inputtext[]);
    Wenn ich bei 'inputtext' keinen Index-Wert eingebe, bekomme ich immer einen Fehler..
    invalid expression, assumed zero


    Wie könnte man das lösen?
    Wenn ich zum Beispiel einen Wert eintrage, dann kommt der Fehler nicht, und es funktioniert..
    Aber welchen Wert soll ich denn dort eintragen, weil bei den Dialogen ist ja immer ein verschiedener "inputtext", also mit verschiedener länge usw..

    Manchmal dauert es ein wenig länger..
    Setze den Timer deswegen nicht mit einem zu kleinen Interval [falls du überhaupt einen Timer dafür setzt]..


    Es ist außerdem ein Unterschied, ob man die Taste gedrückt hält, oder nicht, es updated sich verschieden.. ( War bei mir jedenfalls so [Anti-Cheat Tests] )

    Hey,
    hier mal eine Include für das Geld, Leben & die Schutzweste. Alles wird serverseitig gespeichert...


    Beschreibung
    Wie gesagt, es ist eine Include für das Geld, Leben & die Schutzweste.
    Es werden Textdraws, sowie "Progress-Bars" angezeigt, die das Ganze anzeigen.


    Wichtig hierbei ist jedoch:
    Man kann maximal 999999999$ (999 Millionen) "in der Hand" haben, ansonsten wird es einfach wieder auf 999.999.999$ gesetzt ( wenn man zum Beispiel 1 Milliarde hat ).
    Bei dem Leben und der Schutzweste ebenfalls. Wenn man über 999 HP / AP hat, werden die Punkte wieder auf 999 gesetzt.
    Hat man 0 HP, so stirbt man ganz normal ;)


    Während des Aufnehmens ist mir ein Fehler untertreten, den ihr sicherlich auch entdeckt habt. Ich bin von oben runtergesprungen, und es wurde von der Schutzweste abgezogen. Dies habe ich sofort geändert!


    Funktionen

    Folgende Funktionen müsst ihr verwenden:

    GiveArmour(playerid,Float:_armour); //Gibt jemandem Armour
    SetArmour(playerid,Float:_armour); //Setzt jemandem Armour (SetArmour(playerid,154) = Spieler hat 154 AP)
    GetArmour(playerid); //Gibt die AP aus ( in Integer, kein Float! )
    GiveHealth(playerid,Float:_health); //Gibt jemandem Leben
    SetHealth(playerid,Float:_health); //Setzt jemandem Leben ( siehe bei SetArmour für Beschreibung )
    GetHealth(playerid); //Gibt die HP aus ( in Integer, kein Float! )
    GiveMoney(playerid,_money); //Gibt jemandem Geld
    SetMoney(playerid,_money); //Setzt jemandem Geld ( siehe bei SetArmour für Beschreibung )
    GetMoney(playerid); //Gibe das Geld aus


    Video

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.


    Download
    Pastebin
    Direkt



    Viel Spaß damit!


    //Edit: Pastebinlink erneuert!

    Hey,
    stelle hier mal meine serverseitige Munition / Nachlade - Include vor..


    Beschreibung
    Wie gesagt, es handelt sich um eine Include für's nachladen und für die Munition.
    Mit der Include ist es möglich, die Nachladezeit zu verringern / erhöhen, sowie die Schüsse im Magazin zu verändern.
    Das heißt, wenn ich der Waffe 'Deagle' 50 Schuss ins Magazin gebe ( das in der Include so gespeichert wurde ), so hab ich anstatt 7 Schuss, 50 Schuss im Magazin, logisch ;)
    Außerdem kann ich die Nachladezeit der Waffe ( falls das Magazin leer ist -> Nachladen ) auf zum Beispiel 3 Sekunden machen, so führt er eine Animation aus, die 3 Sekunden dauert ( Animation nachladen ).
    Außerdem wird ein Textdraw angezeigt, das die Schüsse in der "Tasche" sowie im Magazin anzeigt. ( Siehe Video )


    Dies ist zum Beispiel auch gut gegen Cheater!


    Einstellungen in der Include

    Klicke hier für die Einstellungen
    /* Settings */
    stock Nachladen(playerid,weaponid){
    new time;
    switch(weaponid){
    case 22..24,26..32,37,38,41,42:time = 3; //Ladezeit der Waffen anpassen ( Nachladezeit: 3 Sekunden )
    default:{ //Shotguns, Rifles etc.
    if(s_waffe[playerid][weaponid][0] - GunAmmo(weaponid) <= 0)return RemovePlayerWeapon(playerid,weaponid);
    s_waffe[playerid][weaponid][1] = GunAmmo(weaponid),
    s_waffe[playerid][weaponid][0] -= GunAmmo(weaponid);
    return SetPlayerAmmo(playerid,weaponid,99999);
    }
    }
    SetPlayerAmmo(playerid,weaponid,99999);
    SetTimerEx("_nl",888,false,"iii",playerid,time,weaponid);
    return SetPlayerArmedWeapon(playerid,0);
    }
    stock GunAmmo(weaponid){ //Munitionen der Waffen anpassen! ( im Magazin )
    new muni;
    switch(weaponid){
    case 22:muni = 34;
    case 23:muni = 17;
    case 24:muni = 7;
    case 26:muni = 2;
    case 27:muni = 7;
    case 28:muni = 100;
    case 29:muni = 30;
    case 30:muni = 30;
    case 31:muni = 50;
    case 32:muni = 100;
    case 37:muni = 100;
    case 38:muni = 500;
    case 41:muni = 200;
    case 42:muni = 100;
    default:muni = 1;
    }
    return muni;
    }
    /* Settings */


    Video

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    Ab 1:08


    Download
    Pastebin
    Direkt



    Weiteres
    Viel Spaß damit ;)
    PS: Die Include war noch nicht richtig fertig, weswegen die noch ein wenig 'verbuggt' ist, wie man das auch im Video sehen kann ;)
    Dies "muss" jeder für sich allein fixxen, bzw jemand kann es fixxen und ich packe den Code wieder hier rein.

    Hey,
    möchte jetzt anstatt OCMD und den ganzen anderen Command-Prozessoren mal den "Standard - Prozessor" & strtok nehmen.


    Jetzt ist meine Frage, wie kann ich folgendes auf dem Standard-Prozessor machen:
    //OnDialog oder iwas anderes..
    return ocmd_test(playerid);
    Wie ist das möglich, oder ist es nicht möglich?


    //EDIT: Habs ;)
    return OnPlayerCommandText(playerid,"/test");

    Glaube pawn kann ternär.


    warning 215: expression has no effect
    ;)


    Kaliber: Man kann dies aber dann nicht zum Beispiel dafür benutzen:
    new zahl = 5;
    (zahl == 5) ? (GivePlayerMoney(playerid,500)) : (GivePlayerMoney(playerid,-500));
    //Oder eben so ähnlich

    Hey Leute,
    ist es irgendwie möglich, einen Operator in einen String zu packen, und das dann irgendwie, zum Beispiel bei der Funktion "dini_Int" zu benutzen?
    Beispiel:
    new op[1]; format(op,1,">");
    if(dini_Int(DATEI,"INFO") /*op*/ 1); // Abfrage, ob "INFO" in der Datei "DATEI" '>' als 1 ist..


    Wie kann man das machen? ( das ist nur ein Beispiel, und ich weiß, dass es nicht funktioniert ;) )

    Fernando.: Sinn? Du kannst die LoginTimer - Variable auch weg lassen, ist genau der gleiche Effekt, wie der...
    Der Timer wird ja automatisch gestopt, also wozu unnötig Ressourcen für unnötige Variablen verschwenden?


    #Handy


    Danke Jeffry das du wieder mal da bist wenn man Hilfe braucht.
    Ich denke ich werde mich mit MoveObject usw. erst später beschäftigen.
    Habe den Befehl und alles andere bereits aus dem Script entfernt.


    Danke auch an alle anderen!!


    Das musst du zwar nicht, aber egal....


    Machs mal so:
    if(strcmp("/auf", cmdtext, true, 10) == 0)
    {
    if(IstSpielerInFraktion(playerid, 1))
    {
    SendClientMessage(playerid,CHATFARBE,"Du hast eine Tür geöffnet, diese schliesst sich in 5 Sekunden automatisch!");
    MoveObject(LSPDTOR1,235.48875, 64.26849, 1002.59192,2.0);
    SetTimer("tuertimer",5001,false);
    MoveObject(LSPDTOR2,240.46582, 72.40785, 1002.59192,2.0);
    SetTimer("tuertimer",5001,false);
    }
    else return SendClientMessage(playerid,ROT,"Du bist kein Mitglied des Police Departments!");


    return 1;
    }
    #Handy


    Man kann es aber auch anders machen, da fragst du ab ob der Spieler in einem Radius von x bei einer bestimmten Position ist, dann kannst du machen, dass du nur eine Tür öffnest. ..


    Hast du denn auch den Timer in deinem Script erstellt?
    //ONGameModeInit
    SetTimer("NabelBand_Timer",ZEIT IN MILLISEKUNDEN,true);