Beiträge von Mogly1

    was bewirgst du mit dem
    new npc = GetFreeNPCID(); und NPCID[npc] = playerid;???


    Also ich habe das immer nur so beim onplayerspawn

    new botname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, botname, sizeof(botname));
    if(!strcmp(botname, "burgershotdame1", true))
    {
    SetPlayerSkin(playerid,205);
    SetPlayerVirtualWorld(playerid,1);
    }



    Ich denke es ligt an
    PName[playerid]


    mfg Mogly1 :thumbup: :thumbup: :thumbup:

    Yo du kannst nicht ShowPlayerDialog(playerid,DIALOG_STATS,DIALOG_STYLE_MSGBOX, statscaption, statsinfo,"Okay","Schließen");
    statscaption und statsinfo rein amchen du müsstest noch ein string amchen


    z.b so
    new anzeige[500];
    format("anzeige",sizeof(anzeige),"%s\n%s",statscaption, statsinfo);
    ShowPlayerDialog(playerid,DIALOG_STATS,DIALOG_STYLE_MSGBOX, anzeige,"Okay","Schließen");


    Klappts?


    mfg Mogly1 :thumbup: :thumbup: :thumbup:

    Wie ich oben geschrieben habe ich hasse texturieren und habe auch nicht alles texturier :D :D :D



    Wegen den empfang und die zellen und alles nunja auf dieser kleine ecke da war nicht so viel Platz und ein hochhaus passt ja auch nicht hin XD.
    aber du hast recht :thumbup: :thumbup: :thumbup:
    mfg. Mogly1

    Gefällt mir gut :thumbup: Habe eine Frage welche Objekt ID hast du für das Dach und mit welchen Objekten baust du die Wände?
    MFG
    TerabytE

    Also das dach ist die ID: 19378
    Die wände hm naja also von ID: 19353 bis 19463 , diese wände benutze ich.


    mfg. Mogly1 :thumbup: :thumbup: :thumbup:

    Vorweg

    Spoiler anzeigen

    1.Ich hasse texturieren. deswegen sieht die base nicht so besonders gut aus sry.(ich habe nicht alles texturiert)
    2.Ich habe die Türen nicht eingescriptet wie ihr im Video sehen werdet.Da ich zu Faul wahr mit befehlen die auf und zu machen zulassen aber da ja nur das gemapttes zählt hoffe das das nicht schlimm war.


    Video
    Spoiler anzeigen
    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.


    mfg. Mogly1 :thumbup: :thumbup: :thumbup:

    Also
    ihr müsst bei dem
    SetDynamicObjectMaterial(obj, 1, 5134, "wasteland_las2", "ws_sandstone2", -1);
    Die andere Textur nehmen die ihr für den Pfal haben wollt.
    Also z.b so
    new obj;
    obj = CreateDynamicObject(8647, 1926.099975, -1722.839965, 13.425700, 0.000000, 0.000000, 0.000000);
    SetDynamicObjectMaterial(obj, 0, 5134, "wasteland_las2", "ws_sandstone2", -1);
    SetDynamicObjectMaterial(obj, 1, 5134, "adam_v_doort", "ws_guardhousedoor", -1);

    Dabei ist ganz wichtig Das das Object zu erst Created wird.


    mfg. Mogly1 :thumbup: :thumbup: :thumbup:

    Ich habe mal ein Krankenhaus in LV gemappt.

    Infos:

    Spoiler anzeigen
    1.Die Texturen habe ich einfach mal so genommen
    2.Ich bin nicht der beste Fahrer im video :D :D



    Video:
    Spoiler anzeigen
    Externer Inhalt
    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.
    [/size]


    Kleine Veränderung:
    Spoiler anzeigen
    Externer Inhalt
    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.
    [/size]



    Veröffentlichung




    Hoffe euch gefällts mfg. Mogly1 :thumbup: :thumbup: :thumbup:

    Kleine Info vorweg dies ist mein 1 Tutorial.
    Was brauchen wir:
    1. Enum
    2. news
    3. erstellen der Objecte
    4.Timer
    5. Befehl
    6. Dialog



    1.enum
    Als aller erstes erstellen wir ein enum.


    enum muellEnum{


    }


    Nun befüllen wir den/das Enum mit:
    Pfand Dies bewirkt das wir diese Anzahl an Pfandflaschen finden.
    Float:m_x Dies sind die Koordinaten des Objectes und wird für den Befehl verwendet
    Float:m_y Dies sind die Koordinaten des Objectes und wird für den Befehl verwendet
    Float:m_z Dies sind die Koordinaten des Objectes und wird für den Befehl verwendet
    Float:m_rx Dies sind die Rotations Koordinaten des Objectes
    Float:m_ry Dies sind die Rotations Koordinaten des Objectes
    Float:m_rz Dies sind die Rotations Koordinaten des Objectes


    enum muellEnum{
    pfand,
    Float:m_x,
    Float:m_y,
    Float:m_z,
    Float:m_rx,
    Float:m_ry,
    Float:m_rz
    }


    So nun haben wir schon mal das enum aber um es zu benutzen brauchen wir noch ein new.


    2.news

    So das muell steht für das wir es einfach muell genannt haben ihr könnt es auch anders nennen z.b flaschen.
    muellEnum steht dafür das das Script weiß von welchen enum wir das gerade abziehen/benutzen.
    new muell[][muellEnum] = {


    };


    jetzt fehlen natürlich noch die Informationen.
    new muell[][muellEnum] = {
    { 2,-2271.85278, -116.37270, 34.94200, 0.00000, 0.00000, 0.00000},
    { 2,-2278.18530, -116.31293, 34.94200, 0.00000, 0.00000, 0.00000},
    { 2,-2285.54272, -116.49574, 34.94200, 0.00000, 0.00000, 0.00000}
    };
    Die 2 steht für die anfangs Pfandflaschen in der Mülltonne mann kann auch die Mülltonnen mit unterschiedlichen Pfandflaschen spawnen/startenlassen
    Danach kommen die Koordinaten eures Objectes hier habe ich nur 3 neben einander erstellt.
    Am besten erstellt ihr die Mülltonnen mit einen Editor.
    Dies sollte kein Problem sein.


    Nun erstellen wir noch ein new
    new Flaschen[MAX_PLAYERS];
    Dies brauchen wir um unsere Pfandflaschen die wir schon gesammelt haben abzufragen.
    Ihr könnt die Pfandflaschen die ihr schon gesammelt habt abspeichern lassen aber das mache ich nicht in diesem Tutorial mit rein.


    So der Grundbaustein ist schon gesetzt.


    3.Erstellen der Mülltonnen
    Dazu gehen wir unter OnGameModeInit.
    Nun was brauchen wir wir brauchen eine Schleife die die Mülltonnen abfragt die wir oben alle zu stehen haben.
    Das geht so.
    for(new i=0; i<sizeof(muell); i++)
    {


    }

    Dafür steht muell für unser new was wir oben erstellt haben.
    Nun müssen wir das Object noch erstellen lassen.
    Die 1337 steht für die ID des Objectes hier ist es die blaue Mülltonne.
    muell[m_x],muell[m_y],muell[m_z] Stehen für die Koordinaten des Objectes.
    muell[m_rx],muell[m_ry],muell[m_rz] Stehen für die Rotation des Objectes


    CreateDynamicObject(1337,muell[i][m_x],muell[i][m_y],muell[i][m_z],muell[i][m_rx],muell[i][m_ry],muell[i][m_rz]);//man kann auch CreateObject benutzen


    Dann sollte es so aussehen
    for(new i=0; i<sizeof(muell); i++)
    {
    CreateDynamicObject(1337,muell[i][m_x],muell[i][m_y],muell[i][m_z],muell[i][m_rx],muell[i][m_ry],muell[i][m_rz]);//man kann auch CreateObject benutzen
    }


    So nun lassen wir die Objecte schon erstellen.


    4.Timer
    Wir brauchen einen Timer damit die Mülltonne ja Pfandflaschen dazu bekommen.
    Dafür brauchen wir ein forward das wir einfach oben im Script erstellen.
    forward Pfanddazu();
    Den Timer lassen wir am besten auch unter
    OnGameModeInit starten lassen.


    Das Pfanddazu ist einfach der Name des aufgerufenen Publics das wir noch erstellen werden.
    Die 30000 steht dafür das der Timer/Public nach 30 Sekunden abgerufen wird.
    Das False steht dafür das er nur ein mal Läuft.Warum seht ihr noch.Ihr könnt ihn auch Natürlich auf true setzen.
    SetTimer("Pfanddazu", 30000, false);


    So was soll passieren wen der Timer/Public abgerufen wird nun ja wir brauchen wieder eine schleife.
    public Pfanddazu()
    {
    for(new i=0; i<sizeof(muell); i++)
    {


    }
    return 1;
    }
    So was soll dann passieren?
    wir setzen den pfand den wir oben beim enum zu stehen haben +1 oder +eure zahl die ihr wollt das bedeutet das in der Mülltonne nun 1 Pfandflasche dazu kommt.
    public Pfanddazu()
    {
    for(new i=0; i<sizeof(muell); i++)
    {
    muell[i][pfand]+=1;
    }
    return 1;
    }


    Da wir aber oben den timer mit False gestzt haben machen wir nun das Noch.
    Wir setzen den Timer Random damit es nicht immer einheitlich ist wie Pfand dazu kommt.
    Das machen wir so.
    new randomsekunden[]=
    {
    30,
    60,
    90,
    180,
    240,
    300
    };
    Die zahlen stehen für die Sekunden zeit z.b 30 das bedeutet das der Timer/Public in 30 Sekunden abgerufen wird bei 60 in 60 Sekunden.
    Wann Pfandflaschen dazu kommen sollen ist euch überlassen.Einfach nur die zahlen ändern.


    Damit es aber auch gerandomt wird brauchen wir noch das hier.
    new randomtime = random(sizeof(randomsekunden));
    Die randomsekunden stehen für das new was wir gerade gemacht haben mit den random zahlen.


    Schön und Gut was ist aber mit dem Timer??
    Der Timer ist ganz einfach den setzt ihr unter dem random.


    SetTimer("Pfanddazu", 1000*randomsekunden[randomtime], false);
    So das randomsekunden[randomtime] ist einfach eine zahl von allen zahlen die wir eingetragen haben rausgesucht also gerandomt.
    Die 1000* steht dafür dass wir schon 1 Sekunde haben und das mal der random zahl. Da ja der Timer in Millisekunden geht.


    So sollte es dann zum Schluss aussehen.
    public Pfanddazu()
    {
    for(new i=0; i<sizeof(muell); i++)
    {
    muell[i][pfand]+=1;
    }
    new randomsekunden[]=
    {
    30,
    60,
    90,
    180,
    240,
    300
    };
    new randomtime = random(sizeof(randomsekunden));
    SetTimer("Pfanddazu", 1000*randomsekunden[randomtime], false);
    return 1;
    }


    5.Befehl
    Nun zum befehl den befehl erstelle ich mit einem ocmd den nennen wir mal pfandsuchen.
    als erstes brauchen wir wieder eine schleife das Heist.
    ocmd:pfandsuchen(playerid,params[])
    {
    for(new i=0; i<sizeof(muell); i++)
    {


    }
    }


    So nun müssen wir abfragen ob der Spieler in Reichweite ist das geht so.
    if(IsPlayerInRangeOfPoint(playerid,3,muell[i][m_x], muell[i][m_y], muell[i][m_z]))


    Dann müssen wir abfragen ob noch Pfandflaschen in der Mülltonne sind.
    if(muell[i][pfand]>=1)
    Ihr könnt die 1 auch verändern je nach dem mann erst Pfandflaschen finden soll z.b erst nach 5 soll man welche finden.


    Falls Pfandflaschen drinne sin lassen wir unsere Flaschen[] die wir oben definiert haben + die Pfandflaschen die in der mülltonne sind setzen.
    Flaschen[playerid]+=muell[i][pfand];


    Wir können auch noch eine Nachicht schicken lassen das wir welche gefunden haben z.b so
    new string[150];
    format(string,sizeof(string), "~w~Du hast ~g~%i ~w~Pfandflschen gefunden", muell[i][pfand]);
    GameTextForPlayer(playerid, string, 3000, 4);
    Dann Müssen wir die Pfandflaschen der Mülltonne wieder auf 0 setzten das geht so.
    muell[i][pfand]=0;
    Das wärs auch schohn
    Hier seht ihr wie ich es gemacht habe.

    Spoiler anzeigen
    ocmd:pfandsuchen(playerid,params[])
    {
    for(new i=0; i<sizeof(muell); i++)
    {
    if(IsPlayerInRangeOfPoint(playerid,3,muell[i][m_x], muell[i][m_y], muell[i][m_z]))
    {
    if(muell[i][pfand]>=1)//kann man verändern z.b da man erst ab 5 flaschen diese findet
    {
    Flaschen[playerid]+=muell[i][pfand];
    new string[150];
    format(string,sizeof(string), "~w~Du hast ~g~%i ~w~Pfandflschen gefunden", muell[i][pfand]);
    GameTextForPlayer(playerid, string, 3000, 4);
    muell[i][pfand]=0;
    // mann kann noch eine Animation hinzufügen
    return 1;
    }
    else
    {
    SendClientMessage(playerid,rot,"Die Mülltonne ist leer");// müsst ihr selber anpassen
    return 1;
    }
    }
    }
    return SendClientMessage(playerid,rot,"Du bist bei keiner Mülltonne");//falls alle i durch sind kommt dass man an keiner mülltonne ist
    }


    6.Dialog
    Jetzt brauchen wir noch einen Ort wo mann die Pfandflaschen verkaufen kann. Dies kann mann mit befehl oder Dialog machen ich mache es hier mit Dialog.
    Aber dafor müssen wir noch den Dialog definieren.
    #define DIALOG_LADEN 0

    Die Zahl müsst ihr anpassen.


    Nun müsst ihr ihn noch anzeigen lassen wo müsst ihr selber wissen.
    ShowPlayerDialog(playerid,DIALOG_LADEN,DIALOG_STYLE_LIST,"24/7 Laden","Pfandflaschen verkaufen","Auswählen","Abbrechen");
    Nun gehen wir unter OnDialogResponse
    und erstellen ihn.
    was müssen wir alles abfragen wir müssen abfragen welcher dialog??
    if(dialogid==DIALOG_LADEN)


    ob er überhaupt Flaschen dabei hat das machen wir mit
    if(Flaschen[playerid]>=1)


    wenn er welche dabei hat rechnen wir nun seine Flaschen die er dabei hat mal irgend eine zahl die ihr wollt ich nehme mal 5.
    new pfandgeld=Flaschen[playerid]*5;//preis kann angepass werden das *25 steht für mal 25 also anzahl deiner pfanflschen mal 25


    Nun geben wir ihn das geld und setzen seine Flaschen wieder auf 0.Euren System anpasse.
    sInfo[playerid][geld]+=pfandgeld;
    Flaschen[playerid]=0;
    Nun kann man noch eine Message senden lassen das ist euch aber überlassen.


    So sieht es bei mir aus

    Spoiler anzeigen
    if(dialogid==DIALOG_LADEN)
    {
    if(response)
    {
    if(listitem==0)//bei pfand
    {
    if(Flaschen[playerid]>=1)
    {
    new string[180];
    new pfandgeld=Flaschen[playerid]*5;//preis kann angepass werden das *25 steht für mal 25 also anzahl deiner pfanflschen mal 25
    sInfo[playerid][geld]+=pfandgeld;
    format(string, sizeof(string), "-------------Kassenbong---------------");
    SendClientMessage(playerid,weiss,string);
    format(string, sizeof(string), "{FAFAFA}Du hast %d Flaschen für %d{00BB00}$ {FAFAFA}verkauft",Flaschen[playerid],pfandgeld);
    SendClientMessage(playerid,weiss,string);
    Flaschen[playerid]=0;
    }
    else
    {
    SendClientMessage(playerid,rot,"Du hast keine Pfandflaschen");
    }
    }
    else
    {
    SendClientMessage(playerid,weiss,"Beären sie uns bald wieder");
    }
    }
    }


    Ich hoffe ich konnte euch Helfem :thumbup: :thumbup:

    Info:

    Spoiler anzeigen
    Vorweg ich habe die Tür und das 1 Dach endbugt
    Beim der Umkleide habe ich keine guten Objecte gefunden.
    Eigentlich wollte ich noch eine Hebebühne rein machen aber da habe ich auch nicht die richtigen Objecte gefunden.



    Video:

    Spoiler anzeigen
    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.



    mfg. Mogly1 :thumbup: :thumbup:

    da du es als Textdraw anzeigen lääst glaube ich das ~w~ und so nicht geht.


    also so
    format(string, sizeof(string), "~KM/H: %i Zustand: %s Tank: %i/%i Liter", getPlayerSpeed(playerid), zustand, Gas[GetPlayerVehicleID(playerid)],GasMax[GetVehicleModel(GetPlayerVehicleID(playerid))]);