Beiträge von RG-Network

    Hallo,


    wie kann man aus anderen Dateien etwas laden?


    Im Detail:


    Ich habe ein Filterscript (FS), was im Moment jedoch nur funktioniert wenn "IsPlayerAdmin" (also als RCON eingeloggt).


    Jedoch habe ich auch noch einen GameMode (GM), wo die Admindaten "richtig" (mit Rang usw.) gespeichert werden.


    Wie kann man diese erst laden, sodass es das mit dem FS abgleicht und man nicht mehr RCON sein muss?


    Hier ein Scriptausschnitt aus dem FS:


    // This is a comment
    // uncomment the line below if you want to write a filterscript
    #define FILTERSCRIPT


    #include <a_samp>


    #if defined FILTERSCRIPT


    public OnFilterScriptInit()
    {
    print("\n--------------------------------------");
    print(" Clearchat-Filterscript by Sebastian");
    print("--------------------------------------\n");
    return 1;
    }


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(IsPlayerAdmin(playerid)) <--- hier sollte dann z.B. stehen "if (PlayerInfo[playerid][pAdmin] >= 1)"
    if(strcmp("/clearchatall", cmdtext, true, 10) == 0)
    {


    Siehe bitte Zeile 19.


    Die Userdaten sind im Ordner "Accounts/USERFILE.ini" - Die Zeile, wo das AdminLevel abgelesen werden soll heißt "Adminlevel=1338" (<--- z.B.)


    UserFile = Da kommt der Name des Users hin, also z.B. "Accounts/TRS_Sebastian.ini"


    Danke im Voraus! 8o

    include <a_samp>
    #define COLOR_BLUBB 0xB4B5B7FF


    new CarwashPickup;
    new Carwashwasser;


    forward WaschstraßenTimer();
    main()
    {
    print("\n----------------------------------");
    print(" Carwash by samed");
    print("----------------------------------\n");
    }


    public OnGameModeInit()
    {
    CarwashPickup = CreatePickup(1239,2,1911.2797,-1776.2843,13.3828,-1);
    Carwashwasser = CreateObject(9833, 1910.8001708984, -1776.3387451172, 2.9853558540344, 0, 0, 0);
    SetTimer("WaschstraßenTimer", 1000, 1);//Timer 1000Millisekunden Interval (1sek) und wiederholend
    return 1;
    }
    public OnGameModeExit()
    {
    return 1;
    }
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (strcmp("/carwash", cmdtext, true, 10) == 0)
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    MoveObject(Carwashwasser,1910.8001708984, -1776.3387451172, 7.9853558540344, 3);
    GameTextForPlayer(playerid,"Bitte warten!",2000,0);
    TogglePlayerControllable(playerid,0); // ist zum nicht bewegen | 0 = Nicht bewegen / 1 = Bewegen
    SetVehicleHealth(GetPlayerVehicleID(playerid), 1000.0); // dashier
    RepairVehicle(GetPlayerVehicleID(playerid)); // dashier ist zum reppen hab ich jedenfalls in meinem /fixveh
    GivePlayerMoney(playerid,-500); // GivePlayerMoney(playerid,money); ---> hier werden ihm also 500$ abgezogen
    forward SetPlayerUnfreeze(playerid);
    public SetPlayerUnfreeze(playerid)
    {
    TogglePlayerControllable(playerid,true);
    SendClientMessage(playerid,COLOR_BLUE,"Du bist nun fertig"); //oder sonstwas
    return 1;
    }


    SetTimerEx("SetPlayerUnfreeze",5000,false,"i",playerid); //In deinen Befehl
    }
    return 1;
    }
    return 0;
    }
    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    if(playerid == CarwashPickup)
    GameTextForPlayer(playerid,"Tippe /carwash!",2000,0);
    return 1;


    public WaschstraßenTimer()//Timer Public
    {//Falls ja..
    for(new i=0; i<MAX_PLAYERS; i++)//Gibt alle 500Spieler ab..
    {//Falls ja..
    if(IsPlayerInAnyVehicle(i))//Ist Spieler i in einem Fahrzeug
    { //Falls ja..
    if(IsPlayerInRangeOfPoint(i,5.0,1911.2797,-1776.2843,13.3828))//Ist er beim Pickup
    {//Falls ja..
    GameTextForPlayer(i,"Tippe /carwash!",2000,0); //Sendet im die Nachricht
    }
    }
    }
    return 1;
    }
    }

    Hallo,


    sicherlich kennen viele von euch den Befehl "/mute ID ZEIT" - häufig ist dieser angegeben mit "Minuten".


    Ich allerdings möchte den gerne in Sekunden haben, nur wie bekomme ich das hin? Muss man da was durch 60 teilen wie bei /jail aus dem GF?
    Dort hieß es nämlich


    Zitat

    PlayerInfo [playerid] [pJailTime]/60;


    Hier mein "bisheriger Erfolg" ( :whistling: :(


    if(strcmp(cmd, "/mute", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    tmp = strtok(cmdtext, idx);
    new otherplayer = ReturnUser(tmp);
    tmp2 = strtok(cmdtext, idx);
    new time = strval(tmp2);
    new tmp2[256];
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_WHITE, "USAGE: /mute [playerid] [time]");
    return 1;
    }
    new playa;
    playa = ReturnUser(tmp);
    if(PlayerInfo[playerid][pAdmin] < PlayerInfo[otherplayer][pAdmin])
    {
    SendClientMessage(playerid, COLOR_BRIGHTRED, "You can't mute a higher level Admin !");
    }
    if (PlayerInfo[playerid][pAdmin] >= 1)
    {
    if(IsPlayerConnected(playa))
    {
    if(playa != INVALID_PLAYER_ID)
    {
    PlayerInfo[otherplayer][pJailTime] = time;
    GetPlayerName(playa, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    if(PlayerInfo[playa][pMuted] == 0)
    {
    PlayerInfo[playa][pMuted] = 1;
    printf("AdmCmd: %s silenced %s",sendername, giveplayer);
    format(string, sizeof(string), "\"%s\" was muted by Admin \"%s\" for %d seconds.", giveplayer, sendername, PlayerInfo[playerid][pJailTime]);
    ABroadCast(COLOR_LIGHTRED,string,1);
    }
    else
    {
    PlayerInfo[playa][pMuted] = 0;
    printf("AdmCmd: %s unsilenced %s",sendername, giveplayer);
    format(string, sizeof(string), "AdmCmd: %s wurde von %s zum Reden gebracht",giveplayer ,sendername);
    ABroadCast(COLOR_LIGHTRED,string,1);
    }
    }
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD1, " Du darfst diesen Befehl nicht benutzen!");
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_WHITE, "Invalid Player ID.");
    }
    return 1;
    }


    Trotzdem sagt der immer folgendes:


    Zitat

    C:\Users\Server\Server #7\Server final\gamemodes\trs.pwn(28074) : error 017: undefined symbol "tmp2"
    C:\Users\Server\Server #7\Server final\gamemodes\trs.pwn(28075) : error 017: undefined symbol "tmp2"
    C:\Users\Server\Server #7\Server final\gamemodes\trs.pwn(28076) : warning 204: symbol is assigned a value that is never used: "tmp2"


    Wer kann das Problem lösen? Jedenfalls steht jetzt schon fest: Derjenige, der es lösen kann, hat was gut bei mir und deshalb bedanke ich mich schon einmal im Voraus :love:

    Hallihallo,


    also hier meine erste Frage:


    Zitat

    error 047: array sizes do not match, or destination array is too small


    Ist mein Error. Die betroffenen Zeilen lauten wie folgt:


    if(IsPlayerConnected(playerid )&& IsPlayerConnected(targetid))
    {
    new cash = GetPlayerMoney(targetid);
    new atext[20];
    if(PlayerInfo[targetid][pSex] == 1) { atext = "Männlich"; }
    else if(PlayerInfo[targetid][pSex] == 2) { atext = "Weiblich"; }
    new otext[20];
    if(PlayerInfo[targetid][pOrigin] == 1) { otext = "Deutschland"; }
    else if(PlayerInfo[targetid][pOrigin] == 2) { otext = "Osterreich"; }
    else if(PlayerInfo[targetid][pOrigin] == 3) { otext = "Schweiz"; }
    new ttext[20];
    new leader = PlayerInfo[targetid][pLeader];
    new member = PlayerInfo[targetid][pMember];
    if(gTeam[targetid] == 3 || gTeam[targetid] == 4) { ttext = "Zivilist"; }
    else
    {
    if(leader != 0) ttext = Fracs[leader-1]; // <---- Fehler # 1
    if(member != 0) ttext = Fracs[member-1]; // <--- Fehler #2
    }
    new dtext[20];
    if(STDPlayer[targetid] == 1) { dtext = "Chlamydia"; }
    else if(STDPlayer[targetid] == 2) { dtext = "Gonorrhea"; }
    else if(STDPlayer[targetid] == 3) { dtext = "Syphilis"; }
    else { dtext = "-"; }


    Ich habe nur eine "Fraktion" im groben Sinne erstellt ("Verwaltung des Servers" ---> darunter Admins, Sup's, Mod's etc.).


    Second question:


    Wie kann man die "Akten der User" manuell speichern? Also so, dass die derzeitigen Geldbestände gespeichert werden und z.B. ob das Auto kaputt ist oder nicht? Dies wäre nämlich kurz bevor einer Aufspielung eines Updates auf den Server relevant und auch bestimmt für andere sehr nützlich. Bzw. einen einfachen Game Mode Restarting....


    Das sollte - wenn's geht - mit dem Befehl /saveallaccs gehen.



    Vielen Dank schon einmal im Voraus!

    Hallo,


    ich habe folgendes Script (Ausschnitt):


    new pdtor;


    pdtor = CreateObject(968, 1544.679077, -1630.782959, 13.079567, 0.0000, 269.7592, 270.0000);
    CreateObject(985, 1544.524780, -1635.024292, 14.114604, 0.0000, 0.0000, 88.5219);
    CreateObject(985, 1542.285522, -1620.788452, 14.090232, 0.0000, 0.0000, 125.4778);
    CreateObject(971, 96.711929, 1920.333984, 20.738329, 0.0000, 0.8594, 268.2811); //Tor zu am Zaun army


    new OamtSF;

    OamtSF[0] = CreateObject(980, -2547.126953, 618.876953, 16.226517, 0.0000, 0.0000, 360.0000);
    OamtSF[1] = CreateObject(980, -2558.492920, 618.912842, 16.226517, 0.0000, 0.0000, 0.0000);
    OamtSF[2] = CreateObject(980, -2569.997314, 618.982727, 16.226517, 0.0000, 0.0000, 0.0000);
    OamtSF[3] = CreateObject(980, -2581.640869, 618.988647, 16.226517, 0.0000, 0.0000, 0.0000);
    OamtSF[4] = CreateObject(980, -2593.178711, 619.007751, 16.226517, 0.0000, 0.0000, 180.0000);


    Und die Fehlermeldung:



    Den Fehler mit den Subscripts habe ich ehrlich gesagt noch nie gehört. Und bei error #1, dass dort ein ] gefunden wurde und ein ; hin muss ---> wenn ich das mache, kommen noch mehr errors.


    Irgendwas stimmt da nicht :huh:
    Durch Google usw. habe ich mich schon durchgeforstet, aber ohne relevanten Tipps, die mich weiterbringen würden. Ich hoffe auf Hilfe ?(

    Hmm, leider doch nicht so ganz erledigt:


    Das Script überprüft ja nun, ob der Spieler mindestens Admin Rang 1 ist bzw. RCON. Aber <= 1 (kleiner oder gleich 1) ist ja jeder - formt man das um in >= 1 (größer oder gleich 1), dann passiert leider nichts außer "Du bist kein Admin", was ja so nicht stimmt.


    Er liest also leider noch nicht die Userakten (Name.ini) in den Scriptfiles - wie kann man das machen?

    GEIL, danke!


    Empire's Version hat beide Fehler behoben!


    Zitat

    bekommst du da kein error? x___0
    weil da 2 const drinne sind bei mir spackt alles dann rumm


    Also ich mache das mit dcmd. Das wollte ich so eigentlich nicht lernen, habe aber hier im Forum irgendeinen gesehen mit "Lernt dcmd!" Oder: "dmcd an die Macht!". Dann habe ich auf die Signatur (da stand das drin) geklickt und ich wurde weitergeleitet auf die sa-mp.de-Seite (Wiki). Dort habe ich mir beide Versionen angeschaut (eng + deut) und nun habe ich eingesehen, dass es viel leichter geht ^^


    DANKE!


    Hier nochmal für Leute, die es brauchen könnten ^^ (ich muss jetzt andere Befehle einbauen anstatt /heal ^^):


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    dcmd(heal, 4, cmdtext);
    return 0;
    }


    dcmd_heal(playerid, params[])
    {
    if(PlayerInfo[playerid][pAdmin] >= 1)
    {
    new id;
    if (strlen(params))
    {
    id = strval(params);
    if (IsPlayerConnected(id))
    {
    SetPlayerHealth(id, 100.0);
    SendClientMessage(id, 0x00FF00AA, "You have been healed");
    SendClientMessage(playerid, 0x00FF00AA, "Player healed");
    }
    else
    {
    SendClientMessage(playerid, 0xFF0000AA, "Player not found");
    }
    }
    else
    {
    SendClientMessage(playerid, 0xFF0000AA, "Usage: \"/heal <playerid>\"");
    }
    }
    else
    {
    SendClientMessage(playerid, 0xFF0000AA, "Du bist kein Admin!");
    }
    return 1;
    }


    /*public IsPLayerAdmin(playerid)
    {
    if(IsPlayerAdmin(playerid))return 1;
    if(PlayerInfo[playerid][pAdmin]< 1337) return 1;
    return 0;
    }*/


    Ich habe IsPlayerAdmin als Kommentar gesetzt, weil ich es später nicht brauchte bzw. es nichts brachte; habe es dann per enum pInfo gemacht :thumbup:

    Jetzt habe ich doch noch 'ne zweite Frage:


    Im Script heißt es ja:


    if IsPlayerAdmin(playerid)


    Wie kann man das so einstellen, dass das nur ab einem bestimmten Rang ist? Denn dieses ist ja mit RCON, was ja (im besten Falle ;) ) nur der Server-Owner haben sollte.


    if(PlayerInfo[playerid][pAdmin] < 3 && !IsPlayerAdmin(playerid)) return 0;


    habe ich schon ausprobiert (als "Probe" diente das GF), aber das ging irgendwie nicht.


    Da es ein Filterscript ist, muss das ja irgendwie auf die Userdaten (.ini-Files) zugreifen können, um zu überprüfen, ob der Spieler 1. überhaupt Admin ist und 2. welchen Rang er besitzt ([pAdmin]).


    Wie kann man das Problem lösen? Etwa mit #include <"..\scriptfiles\USERNAME.ini">? (oder: #include <"..\scriptfiles\USERNAME.ini io.read">


    Das funktioniert leider auch nicht...


    Hmmm... ?(

    Hallo allerseits,


    ich habe eine Fehlermeldung, aber weiß nicht, wo der Fehler ist:


    dcmd_heal(playerid, params[])
    {
    if IsPlayerAdmin(playerid)
    { // <--- hier ist Zeile 38
    new id;
    if (strlen(params))
    {
    id = strval(params);
    if (IsPlayerConnected(id))
    {
    SetPlayerHealth(id, 100.0);
    SendClientMessage(id, 0x00FF00AA, "You have been healed");
    SendClientMessage(playerid, 0x00FF00AA, "Player healed");
    }
    else
    {
    SendClientMessage(playerid, 0xFF0000AA, "Player not found");
    }
    }
    else
    {
    SendClientMessage(playerid, 0xFF0000AA, "Usage: \"/heal <playerid>\"");
    }
    }
    else
    {
    SendClientMessage(playerid, 0xFF0000AA, "Du bist kein Admin!");
    }
    }


    Und die Fehlermeldung lautete:


    Zitat

    (38) : error 001: expected token: "*then", but found "{"


    Zeile 38 ist oben markiert.


    Ich hoffe, ihr könnt mir helfen. Ich weiß nicht, ob man das hier (bei Scriptwünsche?) nachfragen soll; wenn nicht, einfach verschieben - bin noch recht neu hier.


    MfG


    TRS_Sebastian


    P.S.: Vielen Dank im Voraus! :rolleyes: