Beiträge von SoulMan

    Hey, Scripterpro's!
    Ich brauche euren Hilfe, ich möchte /accept scripten, aber man sollte alles mögliche angeben können, von /accept heal bis zu /accept invite.
    Mit case geht das ja schlecht, da dies nur Nummern nutzt, sprich case heal: geht leider nicht.
    Wäre schön, wenn mir jmd. helfen kann.
    mfG
    Walker


    //Titel verbessert.

    public OnPlayerText(playerid, text[])
    {
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerInRangeOfPoint(i,30.0,x,y,z))
    {
    new Player[64], string[128];
    GetPlayerName(playerid,Player, sizeof(Player));
    format(string,sizeof(string),"%s sagt: %s", Player, text);
    SendClientMessage(i,0xF0F0F0FF, string);
    }
    }
    return 0;
    }
    Um nur in einem bestimmten Radius die Nachrichten erscheinen zu lassen.
    mfG
    Walker


    //Damit alle Spieler "weiß" sind, fügst du einfach folgende Zeile bei OnPlayerConnect ein.
    SetPlayerColor(playerid,0xFFFFFFFF);

    Du setzt eine Variable und wenn diese "eingeschaltet" ist bzw. auf 1 steht, kann man per /r [Text] mit pID bzw. playerid schreiben.
    So würde ich es mir vorstellen. Erfolg nicht garantiert.
    mfG
    Walker

    Möglich ist es allemal.
    Man muss nur ein wenig scripten können.
    Aber ich bin sicher, in der Liste gibt es auch den ein oder anderen passenden Gamemode.
    mfG
    Walker

    Probier's mal so

    if(strcmp( cmd, "/goto", true ) == 0)
    {
    if (GetPVarInt(playerid, "Adminlevel") >= 3)
    {
    new tmp[256];


    tmp = strtok(cmdtext,idx);
    if(!strlen(tmp)) { return 1; }


    new Float:X, Float:Y, Float:Z;


    if(GetPlayerVehicleID(playerid))
    {
    GetPlayerPos( strval(tmp), X, Y, Z );
    SetVehiclePos( GetPlayerVehicleID(playerid), X+2, Y+2, Z );
    } else {
    GetPlayerPos( strval(tmp), X, Y, Z );
    SetPlayerPos( playerid, X+2, Y+2, Z );
    }


    else return SendClientMessage(playerid,rot,"Du bist kein Admin Rang 3!");
    return 1;
    }
    mfG
    Walker

    Hey Com, ich hab ein kleines Problem, ich möchte einen GamText beim betreten eines bestimmten Radius
    erscheinen lassen, hab jedoch keine Ahnung, wohin meine Abfrage kommen soll. Hab's bereits bei OnPlayerSpawn versucht, ohne wirklich
    auf Erfolg zu hoffen.
    if(IsPlayerInRangeOfPoint(playerid,3,1738.93383789,-1942.99157715,13.21482849))
    {
    GameTextForPlayer(playerid,"~g~/atm ~y~um das Menü aufzurufen",800,3);
    }


    mfG
    Walker


    //Sorry für "Doppelthread" das Forum hing und durch mehrmaliges Klicken auf den "Senden" Button, erschien
    dieser Thread 2x. Ich entschuldige mich dafür, hab das 2. Thema auch umgehend gelöscht.

    SetPlayerColor(playerid,Farbe);
    Vorher noch eine Abfrage, in welcher Fraktion derjenige ist und das war's auch schon. ;)
    mfG
    Walker

    Du musst tmp definieren, wenn ich mich nicht irre.
    Ich hab hier auch noch einen Befehl, allerdings als dcmd.
    dcmd_veh(playerid,params[])
    {
    new ModelID, Farbe[2],Float:VehPos[4], vehicleid;
    if(GetPlayerState(playerid)!=PLAYER_STATE_ONFOOT) return SendClientMessage(playerid,0xC8C8C8FF,"Du bist nicht zu Fuß unterwegs!");
    if(sscanf(params, "ddd",ModelID,Farbe[0],Farbe[1])) return SendClientMessage(playerid,0xC8C8C8FF, "/veh [AutoID] [Farbe1] [Farbe2]");
    if(ModelID < 400 || ModelID > 611) return SendClientMessage(playerid,0xC8C8C8FF, "Die Fahrzeug-ID muss zwischen 400 und 611 sein!");
    if(Farbe[0] < 0 || Farbe[0] > 126 || Farbe[1] < 0 || Farbe[1] > 126) return SendClientMessage(playerid,0xC8C8C8FF, "Die FarbID muss zwischen 0 und 126 sein!");
    if(pInfo[playerid][AdminLevel] > 2)
    {
    GetPlayerPos(playerid, VehPos[0],VehPos[1],VehPos[2]);
    GetPlayerFacingAngle(playerid, VehPos[3]);
    vehicleid = CreateVehicle(ModelID,VehPos[0],VehPos[1],VehPos[2],VehPos[3],Farbe[0],Farbe[1],-1);
    LinkVehicleToInterior(vehicleid,GetPlayerInterior(playerid));
    SetVehicleVirtualWorld(vehicleid,GetPlayerVirtualWorld(playerid));
    PutPlayerInVehicle(playerid, vehicleid, 0);
    }
    else return SendClientMessage(playerid, 0xC8C8C8FF, "Dein Adminrank reicht nicht aus!");
    return 1;
    }


    mfG
    Walker

    Er meint, dass du dir selbst eine Variable erstellen sollst, damit
    du diese nutzen kannst, statt
    IsPlayerAdmin(playerid)
    Also z.B.
    if(pInfo[playerid][DeineVariablel] > 4) //"DeineVariable" könnte auch Adminrank heißen etc.
    mfG
    Walker

    dcmd_kick(playerid,params[])
    {
    new pID, str[64];
    if(sscanf(params, "uz",pID,str))return SendClientMessage(playerid,0xC8C8C8FF,"/kick [ID/Name] [Grund]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,0xC8C8C8FF,"Dieser Spieler ist nicht online!");
    if (pID == playerid)return SendClientMessage(playerid,0xC8C8C8FF,"Du kannst dich nicht selber kicken!");
    //if(pInfo[playerid][DeineLevelVariable] > 0)
    {
    new ThePlayer[MAX_PLAYER_NAME], str2[128];
    GetPlayerName(pID,ThePlayer,sizeof(ThePlayer));
    format(str2,sizeof(str2),"%s wurde vom Server gekickt! Grund: %s",ThePlayer,str[0] ? str : "Kein Grund");
    SendClientMessageToAll(0xFF6347AA,str2);
    Kick(pID);
    }
    else return SendClientMessage(playerid, 0xC8C8C8FF, "Dein Adminrank reicht nicht aus!");
    return 1;
    }
    Das auf dein Script anpassen.
    mfG
    Walker

    Bei
    public OnPlayerCommandText(playerid, cmdtext[])
    fügst du das hier ein.
    dcmd(setadmin,8,cmdtext);


    Oben definierst du dcmd
    #define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1


    Dann sollte es gehen.

    dcmd_setadmin(playerid,params[])
    {
    new pID, Level;
    if(sscanf(params, "ud",pID,Level))return SendClientMessage(playerid,0xC8C8C8FF,"/setadmin [ID/Name] [Level]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,0xC8C8C8FF,"Dieser Spieler ist nicht online!");
    if(Level < 0 || Level > 5) return SendClientMessage(playerid,0xC8C8C8FF, "Der Adminrank muss zwischen 0 [Uninvite] und 5 liegen!");
    if(pInfo[playerid][AdminLevel] > 4)
    {
    new adminstring[128], adminstring2[128], playername[MAX_PLAYER_NAME];
    GetPlayerName(playerid,playername,sizeof(playername));
    format(adminstring,sizeof(adminstring),"%s hat dir Adminrank %d zugewiesen!",playername, Level);
    GetPlayerName(pID,playername,sizeof(playername));
    format(adminstring2,sizeof(adminstring2),"Du hast %s Adminrank %d zugewiesen!",playername, Level);
    pInfo[pID][AdminLevel] = Level;
    SendClientMessage(pID,0xFF6347AA, adminstring);
    SendClientMessage(playerid,0xC8C8C8FF,adminstring2);
    }
    else return SendClientMessage(playerid, 0xC8C8C8FF, "Dein Adminrank reicht nicht aus!");
    return 1;
    }
    Musste halt anpassen, so geht es.
    mfG
    Walker