Beiträge von Falke1895

    achso huperla habe das übersehen^^



    //Edit



    if(newkeys & KEY_CROUCH)
    {
    if(IsPlayerInAnyVehicle(playerid))
    {


    new BlauLicht = CreateObject(19419,0.0,0.0,0.0,0.0,0.0,0.0,100.0);
    AttachObjectToVehicle(BlauLicht, medic4, 0,0, 0.83,0,0,0);
    }
    }

    Servus versuche es so:




    if (strcmp("/blaulicht", cmdtext, true) == 0)
    {
    new BlauLicht = CreateObject(19419,0.0,0.0,0.0,0.0,0.0,0.0,100.0);

    AttachObjectToVehicle(BlauLicht, medic4, 0,0, 0.83,0,0,0);
    return1;
    }


    Ah ok habe schon gedacht. Emm ja will auf script umbauen.



    Folgendes:


    Zitat

    // Skins
    // Shopids: 1: Binco 2: Suburban 3: Prolabs 4: ZIP 5:Didiersachs
    // 1 = Männlich, 2 = Weiblich



    AddSkin(7,1,450,1,1);


    new skin[999][skininfo];
    stock AddSkin(skinid, nshopid, nkosten, ntyp, ngesch)
    {
    skin[skinid][shopid] = nshopid;
    skin[skinid][kosten] = nkosten;
    skin[skinid][typ] = ntyp;
    skin[skinid][gesch] = ngesch;
    }


    // Script Fusion by MiniYoda

    Servus, ich habe frage und zwar die neue Sa-mp Funktion. Mit Skin auswähle etc. Wo wird der skin gesetzt?



    //
    // Admin player skin changer using previews. For SA-MP 0.3x and above.
    // - Kye 2012
    //


    #include <a_samp>
    #include "../include/gl_common.inc"


    #define TOTAL_ITEMS 300
    #define SELECTION_ITEMS 21
    #define ITEMS_PER_LINE 7


    #define HEADER_TEXT "Skins"
    #define NEXT_TEXT "Next"
    #define PREV_TEXT "Prev"


    #define DIALOG_BASE_X 75.0
    #define DIALOG_BASE_Y 130.0
    #define DIALOG_WIDTH 550.0
    #define DIALOG_HEIGHT 180.0
    #define SPRITE_DIM_X 60.0
    #define SPRITE_DIM_Y 70.0


    new gTotalItems = TOTAL_ITEMS;
    new PlayerText:gCurrentPageTextDrawId[MAX_PLAYERS];
    new PlayerText:gHeaderTextDrawId[MAX_PLAYERS];
    new PlayerText:gBackgroundTextDrawId[MAX_PLAYERS];
    new PlayerText:gNextButtonTextDrawId[MAX_PLAYERS];
    new PlayerText:gPrevButtonTextDrawId[MAX_PLAYERS];
    new PlayerText:gSelectionItems[MAX_PLAYERS][SELECTION_ITEMS];
    new gSelectionItemsTag[MAX_PLAYERS][SELECTION_ITEMS];
    new gItemAt[MAX_PLAYERS];


    new gItemList[TOTAL_ITEMS] = {
    0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,
    50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,
    97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,
    132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,
    167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,
    202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,
    237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,
    272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299
    };


    //------------------------------------------------


    public OnFilterScriptInit()
    {
    print("\n--Admin Player Skin Changer Loaded\n");
    return 1;
    }


    //------------------------------------------------


    GetNumberOfPages()
    {
    if((gTotalItems >= SELECTION_ITEMS) && (gTotalItems % SELECTION_ITEMS) == 0)
    {
    return (gTotalItems / SELECTION_ITEMS);
    }
    else return (gTotalItems / SELECTION_ITEMS) + 1;
    }


    //------------------------------------------------


    PlayerText:CreateCurrentPageTextDraw(playerid, Float:Xpos, Float:Ypos)
    {
    new PlayerText:txtInit;
    txtInit = CreatePlayerTextDraw(playerid, Xpos, Ypos, "0/0");
    PlayerTextDrawUseBox(playerid, txtInit, 0);
    PlayerTextDrawLetterSize(playerid, txtInit, 0.4, 1.1);
    PlayerTextDrawFont(playerid, txtInit, 1);
    PlayerTextDrawSetShadow(playerid, txtInit, 0);
    PlayerTextDrawSetOutline(playerid, txtInit, 1);
    PlayerTextDrawColor(playerid, txtInit, 0xACCBF1FF);
    PlayerTextDrawShow(playerid, txtInit);
    return txtInit;
    }


    //------------------------------------------------
    // Creates a button textdraw and returns the textdraw ID.


    PlayerText:CreatePlayerDialogButton(playerid, Float:Xpos, Float:Ypos, Float:Width, Float:Height, button_text[])
    {
    new PlayerText:txtInit;
    txtInit = CreatePlayerTextDraw(playerid, Xpos, Ypos, button_text);
    PlayerTextDrawUseBox(playerid, txtInit, 1);
    PlayerTextDrawBoxColor(playerid, txtInit, 0x000000FF);
    PlayerTextDrawBackgroundColor(playerid, txtInit, 0x000000FF);
    PlayerTextDrawLetterSize(playerid, txtInit, 0.4, 1.1);
    PlayerTextDrawFont(playerid, txtInit, 1);
    PlayerTextDrawSetShadow(playerid, txtInit, 0); // no shadow
    PlayerTextDrawSetOutline(playerid, txtInit, 0);
    PlayerTextDrawColor(playerid, txtInit, 0x4A5A6BFF);
    PlayerTextDrawSetSelectable(playerid, txtInit, 1);
    PlayerTextDrawAlignment(playerid, txtInit, 2);
    PlayerTextDrawTextSize(playerid, txtInit, Height, Width); // The width and height are reversed for centering.. something the game does <g>
    PlayerTextDrawShow(playerid, txtInit);
    return txtInit;
    }

    //------------------------------------------------


    PlayerText:CreatePlayerHeaderTextDraw(playerid, Float:Xpos, Float:Ypos, header_text[])
    {
    new PlayerText:txtInit;
    txtInit = CreatePlayerTextDraw(playerid, Xpos, Ypos, header_text);
    PlayerTextDrawUseBox(playerid, txtInit, 0);
    PlayerTextDrawLetterSize(playerid, txtInit, 1.25, 3.0);
    PlayerTextDrawFont(playerid, txtInit, 0);
    PlayerTextDrawSetShadow(playerid, txtInit, 0);
    PlayerTextDrawSetOutline(playerid, txtInit, 1);
    PlayerTextDrawColor(playerid, txtInit, 0xACCBF1FF);
    PlayerTextDrawShow(playerid, txtInit);
    return txtInit;
    }


    //------------------------------------------------


    PlayerText:CreatePlayerBackgroundTextDraw(playerid, Float:Xpos, Float:Ypos, Float:Width, Float:Height)
    {
    new PlayerText:txtBackground = CreatePlayerTextDraw(playerid, Xpos, Ypos,
    " ~n~"); // enough space for everyone
    PlayerTextDrawUseBox(playerid, txtBackground, 1);
    PlayerTextDrawBoxColor(playerid, txtBackground, 0x4A5A6BBB);
    PlayerTextDrawLetterSize(playerid, txtBackground, 5.0, 5.0);
    PlayerTextDrawFont(playerid, txtBackground, 0);
    PlayerTextDrawSetShadow(playerid, txtBackground, 0);
    PlayerTextDrawSetOutline(playerid, txtBackground, 0);
    PlayerTextDrawColor(playerid, txtBackground,0x000000FF);
    PlayerTextDrawTextSize(playerid, txtBackground, Width, Height);
    PlayerTextDrawBackgroundColor(playerid, txtBackground, 0x4A5A6BBB);
    PlayerTextDrawShow(playerid, txtBackground);
    return txtBackground;
    }


    //------------------------------------------------
    // Creates a model preview sprite


    PlayerText:CreateModelPreviewTextDraw(playerid, modelindex, Float:Xpos, Float:Ypos, Float:width, Float:height)
    {
    new PlayerText:txtPlayerSprite = CreatePlayerTextDraw(playerid, Xpos, Ypos, ""); // it has to be set with SetText later
    PlayerTextDrawFont(playerid, txtPlayerSprite, TEXT_DRAW_FONT_MODEL_PREVIEW);
    PlayerTextDrawColor(playerid, txtPlayerSprite, 0xFFFFFFFF);
    PlayerTextDrawBackgroundColor(playerid, txtPlayerSprite, 0x88888899);
    PlayerTextDrawTextSize(playerid, txtPlayerSprite, width, height); // Text size is the Width:Height
    PlayerTextDrawSetPreviewModel(playerid, txtPlayerSprite, modelindex);
    PlayerTextDrawSetSelectable(playerid, txtPlayerSprite, 1);
    PlayerTextDrawShow(playerid,txtPlayerSprite);
    return txtPlayerSprite;
    }


    //------------------------------------------------


    DestroyPlayerModelPreviews(playerid)
    {
    new x=0;
    while(x != SELECTION_ITEMS) {
    if(gSelectionItems[playerid][x] != PlayerText:INVALID_TEXT_DRAW) {
    PlayerTextDrawDestroy(playerid, gSelectionItems[playerid][x]);
    gSelectionItems[playerid][x] = PlayerText:INVALID_TEXT_DRAW;
    }
    x++;
    }
    }


    //------------------------------------------------


    ShowPlayerModelPreviews(playerid)
    {
    new x=0;
    new Float:BaseX = DIALOG_BASE_X;
    new Float:BaseY = DIALOG_BASE_Y - (SPRITE_DIM_Y * 0.33); // down a bit
    new linetracker = 0;

    new itemat = GetPVarInt(playerid, "skinc_page") * SELECTION_ITEMS;

    // Destroy any previous ones created
    DestroyPlayerModelPreviews(playerid);


    while(x != SELECTION_ITEMS && itemat < gTotalItems) {
    if(linetracker == 0) {
    BaseX = DIALOG_BASE_X + 25.0; // in a bit from the box
    BaseY += SPRITE_DIM_Y + 1.0; // move on the Y for the next line
    }
    gSelectionItems[playerid][x] = CreateModelPreviewTextDraw(playerid, gItemList[itemat], BaseX, BaseY, SPRITE_DIM_X, SPRITE_DIM_Y);
    gSelectionItemsTag[playerid][x] = gItemList[itemat];
    BaseX += SPRITE_DIM_X + 1.0; // move on the X for the next sprite
    linetracker++;
    if(linetracker == ITEMS_PER_LINE) linetracker = 0;
    itemat++;
    x++;
    }
    }


    //------------------------------------------------


    UpdatePageTextDraw(playerid)
    {
    new PageText[64+1];
    format(PageText, 64, "%d/%d", GetPVarInt(playerid,"skinc_page") + 1, GetNumberOfPages());
    PlayerTextDrawSetString(playerid, gCurrentPageTextDrawId[playerid], PageText);
    }


    //------------------------------------------------


    CreateSelectionMenu(playerid)
    {
    gBackgroundTextDrawId[playerid] = CreatePlayerBackgroundTextDraw(playerid, DIALOG_BASE_X, DIALOG_BASE_Y + 20.0, DIALOG_WIDTH, DIALOG_HEIGHT);
    gHeaderTextDrawId[playerid] = CreatePlayerHeaderTextDraw(playerid, DIALOG_BASE_X, DIALOG_BASE_Y, HEADER_TEXT);
    gCurrentPageTextDrawId[playerid] = CreateCurrentPageTextDraw(playerid, DIALOG_WIDTH - 30.0, DIALOG_BASE_Y + 15.0);
    gNextButtonTextDrawId[playerid] = CreatePlayerDialogButton(playerid, DIALOG_WIDTH - 30.0, DIALOG_BASE_Y+DIALOG_HEIGHT+100.0, 50.0, 16.0, NEXT_TEXT);
    gPrevButtonTextDrawId[playerid] = CreatePlayerDialogButton(playerid, DIALOG_WIDTH - 90.0, DIALOG_BASE_Y+DIALOG_HEIGHT+100.0, 50.0, 16.0, PREV_TEXT);


    ShowPlayerModelPreviews(playerid);
    UpdatePageTextDraw(playerid);
    }


    //------------------------------------------------


    DestroySelectionMenu(playerid)
    {
    DestroyPlayerModelPreviews(playerid);


    PlayerTextDrawDestroy(playerid, gHeaderTextDrawId[playerid]);
    PlayerTextDrawDestroy(playerid, gBackgroundTextDrawId[playerid]);
    PlayerTextDrawDestroy(playerid, gCurrentPageTextDrawId[playerid]);
    PlayerTextDrawDestroy(playerid, gNextButtonTextDrawId[playerid]);
    PlayerTextDrawDestroy(playerid, gPrevButtonTextDrawId[playerid]);


    gHeaderTextDrawId[playerid] = PlayerText:INVALID_TEXT_DRAW;
    gBackgroundTextDrawId[playerid] = PlayerText:INVALID_TEXT_DRAW;
    gCurrentPageTextDrawId[playerid] = PlayerText:INVALID_TEXT_DRAW;
    gNextButtonTextDrawId[playerid] = PlayerText:INVALID_TEXT_DRAW;
    gPrevButtonTextDrawId[playerid] = PlayerText:INVALID_TEXT_DRAW;
    }


    //------------------------------------------------


    HandlePlayerItemSelection(playerid, selecteditem)
    {
    // In this case we change the player's skin
    if(gSelectionItemsTag[playerid][selecteditem] >= 0 && gSelectionItemsTag[playerid][selecteditem] < 300) {
    SetPlayerSkin(playerid, gSelectionItemsTag[playerid][selecteditem]);
    return;
    }
    }


    //------------------------------------------------


    public OnPlayerConnect(playerid)
    {
    // Init all of the textdraw related globals
    gHeaderTextDrawId[playerid] = PlayerText:INVALID_TEXT_DRAW;
    gBackgroundTextDrawId[playerid] = PlayerText:INVALID_TEXT_DRAW;
    gCurrentPageTextDrawId[playerid] = PlayerText:INVALID_TEXT_DRAW;
    gNextButtonTextDrawId[playerid] = PlayerText:INVALID_TEXT_DRAW;
    gPrevButtonTextDrawId[playerid] = PlayerText:INVALID_TEXT_DRAW;

    for(new x=0; x < SELECTION_ITEMS; x++) {
    gSelectionItems[playerid][x] = PlayerText:INVALID_TEXT_DRAW;
    }

    gItemAt[playerid] = 0;

    return 1; // Allow other scripts to keep processing OnPlayerConnect
    }


    //-------------------------------------------
    // Even though only Player* textdraws are used in this script,
    // OnPlayerClickTextDraw is still required to handle ESC


    public OnPlayerClickTextDraw(playerid, Text:clickedid)
    {
    if(GetPVarInt(playerid, "skinc_active") == 0) return 0;


    // Handle: They cancelled (with ESC)
    if(clickedid == Text:INVALID_TEXT_DRAW) {
    DestroySelectionMenu(playerid);
    SetPVarInt(playerid, "skinc_active", 0);
    PlayerPlaySound(playerid, 1085, 0.0, 0.0, 0.0);
    return 1;
    }

    return 0;
    }


    //------------------------------------------------


    public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)
    {
    if(GetPVarInt(playerid, "skinc_active") == 0) return 0;


    new curpage = GetPVarInt(playerid, "skinc_page");

    // Handle: next button
    if(playertextid == gNextButtonTextDrawId[playerid]) {
    if(curpage < (GetNumberOfPages() - 1)) {
    SetPVarInt(playerid, "skinc_page", curpage + 1);
    ShowPlayerModelPreviews(playerid);
    UpdatePageTextDraw(playerid);
    PlayerPlaySound(playerid, 1083, 0.0, 0.0, 0.0);
    } else {
    PlayerPlaySound(playerid, 1085, 0.0, 0.0, 0.0);
    }
    return 1;
    }

    // Handle: previous button
    if(playertextid == gPrevButtonTextDrawId[playerid]) {
    if(curpage > 0) {
    SetPVarInt(playerid, "skinc_page", curpage - 1);
    ShowPlayerModelPreviews(playerid);
    UpdatePageTextDraw(playerid);
    PlayerPlaySound(playerid, 1084, 0.0, 0.0, 0.0);
    } else {
    PlayerPlaySound(playerid, 1085, 0.0, 0.0, 0.0);
    }
    return 1;
    }

    // Search in the array of textdraws used for the items
    new x=0;
    while(x != SELECTION_ITEMS) {
    if(playertextid == gSelectionItems[playerid][x]) {
    HandlePlayerItemSelection(playerid, x);
    PlayerPlaySound(playerid, 1083, 0.0, 0.0, 0.0);
    DestroySelectionMenu(playerid);
    CancelSelectTextDraw(playerid);
    SetPVarInt(playerid, "skinc_active", 0);
    return 1;
    }
    x++;
    }

    return 0;
    }


    //------------------------------------------------


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    new cmd[256+1];
    new idx;


    if(!IsPlayerAdmin(playerid)) return 0;

    cmd = strtok(cmdtext, idx);


    if(strcmp("/skinchange", cmd, true) == 0)
    {
    // If there was a previously created selection menu, destroy it
    DestroySelectionMenu(playerid);

    SetPVarInt(playerid, "skinc_active", 1);
    //SetPVarInt(playerid, "skinc_page", 0); // will reset the page back to the first

    CreateSelectionMenu(playerid);
    SelectTextDraw(playerid, 0xACCBF1FF);
    return 1;
    }

    return 0;
    }
    //------------------------------------------------


    Quelle: sa-mp.com kye

    Füge folgendes ganz unten ein:


    stock SendClientMessageToAllAtRadius(playerid,Float:radi,string[],col1,col2,col3,col4,col5){
    new Float:posx, Float:posy, Float:posz;
    new Float:oldposx, Float:oldposy, Float:oldposz;
    new Float:tempposx, Float:tempposy, Float:tempposz;
    GetPlayerPos(playerid, oldposx, oldposy, oldposz);
    ForAllPlayers(i){
    GetPlayerPos(i, posx, posy, posz);
    tempposx = (oldposx -posx);
    tempposy = (oldposy -posy);
    tempposz = (oldposz -posz);
    if (((tempposx < radi/16) && (tempposx > -radi/16)) && ((tempposy < radi/16) && (tempposy > -radi/16)) && ((tempposz < radi/16) && (tempposz > -radi/16)))
    SendClientMessage(i, col1, string);
    else if (((tempposx < radi/8) && (tempposx > -radi/8)) && ((tempposy < radi/8) && (tempposy > -radi/8)) && ((tempposz < radi/8) && (tempposz > -radi/8)))
    SendClientMessage(i, col2, string);
    else if (((tempposx < radi/4) && (tempposx > -radi/4)) && ((tempposy < radi/4) && (tempposy > -radi/4)) && ((tempposz < radi/4) && (tempposz > -radi/4)))
    SendClientMessage(i, col3, string);
    else if (((tempposx < radi/2) && (tempposx > -radi/2)) && ((tempposy < radi/2) && (tempposy > -radi/2)) && ((tempposz < radi/2) && (tempposz > -radi/2)))
    SendClientMessage(i, col4, string);
    else if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
    SendClientMessage(i, col5, string);
    }return 1;
    }

    mhmm


    Servus, ich bin dabei mich mit den neuen sachen zubefassen.


    Nun habe ich hilfe menü erstellt.


    Folges gibt er mir aus:



    Code: ShowPlayerDialog(playerid, DIALOG_H1, DIALOG_STYLE_LIST, "{FFFFFF}Generelle Hilfe", "/report {FF0000}(Um Admin Hilfe Anzufodern)\n/spawn {FF0000}(Spawn Menu)\n/jtime {FF0000}(Jail Time Herausfinden)\n/perso [Spielerid] {FF0000}(Personalausweis vorzeigen)\n/scheine id {FF0000}(Die Fuehrerscheine vorzeigen)\n/gibgeld [spielerid] [betrag] {FF0000}(Spieler Geldbetrag übergeben)\n/piss {FF0000}(Um zu Pinkeln.)\n/ani {FF0000}(Animation ausfuehren)\n/togcnn {FF0000}(Um News zu Aktiviren/Deaktiviren)", "Zurück", "Beenden");

    Du baust dir ein Befehl zb : /bikeleihen dann setz du eine abfrage ob er ein bike hat oder nicht. Wenn Ja bekommt er kein weiter bike Um unnötige spam zu vermeiden. Wenn Nein erstellt er ein bike an seine position und wird draufgesetzt. Beim Disconnect sollte das bike natürlich auch gelöscht werden.