Beiträge von sLy

    Hey.


    Ich versuche gerade , dass alle Autotüren der GS standardmäßig zu sind.
    Dies geht aber nicht, hier der Code: (Der Motor ist aber aus!)

    OnVehicleSpawn
    new engine,lights,alarm,doors,bonnet,boot,objective;
    GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(vehicleid,false,lights,alarm,true,bonnet,boot,objective); // Hab auch schon SetVehicleParamsEx(vehicleid,false,lights,alarm,false,bonnet,boot,objective); probiert


    Nur möchte ich , dass bei Leuten von der GS die Türen auf sind , bei anderen nur die Beifahrer türen.


    Also ein GS Mitglied kann den GS Sultan fahren , ein "kein-GS" Mitglied kann nur mit G einsteigen, die Fahrertür ist bei ihm abgeschlossen.


    Wo muss ich das reinmachen?


    Ich schätze , es ist mit SetVehicleParamsForPlayer , nur bei OnPlayerEnterVehicle und OnPlayerStateChange geht es erst, wenn der Spieler im Auto ist!

    Aah :D


    Also wäre es so richtig?



    new TicketPreis[MAX_PLAYERS], TicketGeber[MAX_PLAYERS];


    OnPlayerConnect
    TicketPreis[playerid]=0;
    TicketGeber[playerid]=-255;


    ocmd:strafzettel(playerid,params[])
    {
    if(isPlayerACop(playerid))return SendClientMessage(playerid,Rot,"Du bist kein Polizist!");
    new pID,grund[128],strafe,string[128];
    if(sscanf(params,"us[128]i",pID,grund,strafe))return SendClientMessage(playerid,Rot,"Fehler: /strafzettel [ID/Name] [Grund] [Preis]");
    {
    format(string,sizeof(string),"Polizist %s gibt dir einen Strafzettel.\nGrund: %s\nPreis: %i",PlayerName(playerid),grund,strafe);
    ShowPlayerDialog(pID,Dialog_Strafzettel,DIALOG_STYLE_MSGBOX,"Strafzettel",string,"Zahlen","Abbrechen");
    TicketPreis[pID]=strafe;
    TicketGeber[pID]=playerid;
    }
    return 1;
    }


    if(dialogid == Dialog_Strafzettel)
    {
    if(response==0)
    {
    new string[128];
    format(string,sizeof(string),"%s hat den Strafzettel nicht bezahlt bezahlt!");
    SendClientMessage(TicketGeber[playerid],Hellblau,string);
    TicketPreis[playerid]=0;
    TicketGeber[playerid]=-255;
    }
    if(response==1)
    {
    GivePlayerMoney(playerid,-TicketPreis[playerid]);
    GivePlayerMoney(TicketGeber[playerid],TicketPreis[playerid]);
    new string[128];
    format(string,sizeof(string),"%s hat den Strafzettel bezahlt!");
    SendClientMessage(TicketGeber[playerid],Hellblau,string);
    TicketPreis[playerid]=0;
    TicketGeber[playerid]=-255;
    }
    }


    Edit:
    Wie kann ich machen , dass man mehrere Wörter bei grund schreiben kann?


    zB. /strafzettel xSpeciiaL Zu schnelles fahren 5000


    Da würde ein Fehler kommen , da er "schnelles" als den Preis ansieht!

    Hey ^^


    Ich weiß nicht recht wie ich es anstellen soll , dass man Parameter aus einem Befehl irgendwo ausliest.


    In diesem Fall möchte ich machen , dass ein Cop einem Spieler einen Strafzettel geben kann, mit dem Befehl /strafzettel [ID] [Grund] [Preis].
    So , nun soll dem Spieler ein Dialog angezeigt werden , in dem halt der Grund und der Preis steht.


    Nun aber ist mein Problem , wie ich ihm den Preis abziehe.
    Also wenn er auf [zahlen] drückt , dass ihm der im Command angegebene Preis abgezogen wird , und bei [abbrechen] halt nicht!


    Edit: Hier nochmal als Code



    ocmd:strafzettel(playerid,params[])
    {
    if(isPlayerACop(playerid))return SendClientMessage(playerid,Rot,"Du bist kein Polizist!");
    new pID,grund[128],strafe,string[128];
    if(sscanf(params,"us[128]i",pID,grund,strafe))return SendClientMessage(playerid,Rot,"Fehler: /strafzettel [ID/Name] [Grund] [Preis]");
    {
    format(string,sizeof(string),"Polizist %s gibt dir einen Strafzettel.\nGrund: %s\nPreis: %i",PlayerName(playerid),grund,strafe);
    ShowPlayerDialog(pID,Dialog_Strafzettel,DIALOG_STYLE_MSGBOX,"Strafzettel",string,"Zahlen","Abbrechen");
    }
    return 1;
    }


    if(dialogid == Dialog_Strafzettel)
    {
    if(response==0)
    {
    //Hier soll dem Cop, der den Strafzettel ausgestellt hat , eine Nachricht gesendet werden , dass der Spieler den Strafzettel nicht bezahlt hat ! (HILFE)
    }
    if(response==1)
    {
    //Hier soll dem Spieler das Geld des Strafzettels abgezogen werden , und dem Cop gegeben werden! (HILFE)
    }
    }


    Okay , danke soweit ^^


    Nur wie mache ich es , dass die beiden , also der Anrufer und der Annehmer reden können?


    Ich habs jetzt mit Booleans , und halt einer Abfrage bei OnPlayerText , aber wenn zB. 8 Leute telefonieren , kann doch jeder dass von 7 Leuten lesen oder?



    if(dialogid == Dialog_HandyAnrufen)
    {
    if(!isNumeric(inputtext))
    {
    SendClientMessage(playerid, Rot, "Die Nummer gibt es nicht!");
    return 1;
    }
    else
    {
    if(!strlen(inputtext))
    {
    SendClientMessage(playerid, Rot, "Die Nummer gibt es nicht!");
    return 1;
    }
    else
    {
    new Spieler[64];
    for(new i=0;i<GetMaxPlayers();i++)
    {
    format(Spieler,sizeof(Spieler),"Spieler/%s.txt",PlayerName(i));
    if(dini_Int(Spieler,"Handynummer") == strval(inputtext))
    {
    new string[128];
    format(string,sizeof(string),"%s wird angerufen",PlayerName(i));
    anrufer[playerid]=true;
    besetzt[playerid]=true;
    wirdangerufen[i]=true;
    besetzt[i]=true;
    SetTimerEx("handyklingeln",3500,1,"i",playerid);
    SetTimerEx("handyklingeln",3500,1,"i",i);
    SendClientMessage(playerid,Gelb,string);
    return 1;
    }
    else
    {
    SendClientMessage(playerid, Rot, "Die Nummer gibt es nicht!");
    return 1;
    }
    }
    }
    }
    }


    public handyklingeln(playerid)
    {
    if(wirdangerufen[playerid]==1)
    {
    SendClientMessage(playerid,Lila,"Tut... Tut...");
    new string[128];
    new handyname[64];
    switch(dini_Int(Spieler,"Handy"))
    {
    case 1:{handyname="Sammsung Galaxay S||";}
    case 2:{handyname="Apfel Eiphone 3GS";}
    case 3:{handyname="Apfel Eiphone 4S";}
    }
    format(string, sizeof(string), "%s's %s klingelt...", PlayerName(playerid),handyname);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid, x, y, z);
    if(IsPlayerInRangeOfPoint(i, 60.0, x, y, z))
    {
    SendClientMessage(i, Lila, string);
    }
    }
    }
    else if(anrufer[playerid]==1)
    {
    SendClientMessage(playerid,Lila,"Tut... Tut...");
    }
    }


    public OnPlayerText(playerid, text[])
    {
    if(anrufer[playerid] || annehmer[playerid])
    {
    //Hier weiß ich nicht weiter ._.

    //NORMALER CHAT , IGNORIEREN!
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid, x, y, z);
    if(IsPlayerInRangeOfPoint(i, 100.0, x, y, z))
    {
    SendClientMessage(i, Weiss, string);
    return 0;
    }
    }
    }


    dann Zeig den Befehl und dazu noch, die Funktion zum erstellen :!:


    stimmt ,sry vergessen ^^


    stock CreateHaus(Float:x,Float:y,Float:z,preis,besitzer[32],innenraum) // die ersten 3 Werte sind die Koordinaten, der 4. der Preis und der 5. der Besitzer
    {
    new Hausstring[50];
    for(new haus =1;haus<MAX_HAUS;haus++)
    {
    format(Hausstring,50,"/haus/%d.txt",haus); //nun ist der Pfad der Datei im String "pfad".
    if(!fexist(Hausstring)) // wenn diese Datei noch nicht existiert
    {
    dini_Create(Hausstring); // dann erstellen wir sie
    dini_FloatSet(Hausstring,"x",x); // und füllen sie mit unseren Werten.
    dini_FloatSet(Hausstring,"y",y);
    dini_FloatSet(Hausstring,"z",z);
    dini_IntSet(Hausstring,"preis",preis);
    dini_Set(Hausstring,"besitzer",besitzer);
    dini_IntSet(Hausstring,"Besetzt",0);
    dini_IntSet(Hausstring,"innenraum",innenraum);
    dini_IntSet(Hausstring,"Mietpreis",1000);
    print("test");
    return LoadHaus(haus);
    }
    }
    return 1;
    }


    stock LoadHaus(hausid)
    {
    new Hausstring[50];
    format(Hausstring,50,"/haus/%d.txt",hausid);
    if(!fexist(Hausstring))return 0; //überprüft ob die Datei existiert, wenn nicht wird 0 zurückgegeben
    {
    HausInfo[hausid][haus_x] = dini_Float(Hausstring,"x"); // hier laden wir die Werte
    HausInfo[hausid][haus_y] = dini_Float(Hausstring,"y");
    HausInfo[hausid][haus_z] = dini_Float(Hausstring,"z");
    HausInfo[hausid][haus_preis] = dini_Int(Hausstring,"preis");
    format(HausInfo[hausid][haus_besitzer],32,"%s",dini_Get(Hausstring,"besitzer"));
    HausInfo[hausid][haus_innenraum] = dini_Int(Hausstring,"innenraum");
    HausInfo[hausid][haus_besetzt] = dini_Int(Hausstring,"Besetzt");
    HausInfo[hausid][haus_mietpreis] = dini_Int(Hausstring,"Mietpreis");
    HausInfo[hausid][haus_mieter] = dini_Int(Hausstring,"Mieter");
    format(HausInfo[hausid][haus_mietername1],32,"%s",dini_Get(Hausstring,"Mieter1"));
    format(HausInfo[hausid][haus_mietername2],32,"%s",dini_Get(Hausstring,"Mieter2"));
    format(HausInfo[hausid][haus_mietername3],32,"%s",dini_Get(Hausstring,"Mieter3"));
    format(HausInfo[hausid][haus_mietername4],32,"%s",dini_Get(Hausstring,"Mieter4"));
    format(HausInfo[hausid][haus_mietername5],32,"%s",dini_Get(Hausstring,"Mieter5"));
    HausInfo[hausid][haus_pickup] = CreatePickup(1273 ,23,HausInfo[hausid][haus_x],HausInfo[hausid][haus_y],HausInfo[hausid][haus_z]-0.1,0); //erstellt ein Pickup an den Hauskoordinaten
    if(HausInfo[hausid][haus_besetzt] == 0)
    {
    new string[256]; //Hier erstellen wir einen neuen String, diesen formatieren wir mit den nötigen Infos:
    format(string,sizeof(string),"*[Hausinfo]*\nDieses Haus steht zum Verkauf!\nPreis: %i$\n***",HausInfo[hausid][haus_preis]); //dürfte wohl klar sein
    HausInfo[hausid][haus_label] = Create3DTextLabel(string,0xFF00FF,HausInfo[hausid][haus_x],HausInfo[hausid][haus_y],HausInfo[hausid][haus_z],20,0,1); //Hier erstellen wir das Label. Die ID wird in HausInfo[hausid][haus_label] gespeichert (das ist wichtig für uns, da wir das Label später wieder löschen wollen!)
    }
    if(HausInfo[hausid][haus_besetzt] == 1)
    {
    new string[256]; //Hier erstellen wir einen neuen String, diesen formatieren wir mit den nötigen Infos:
    format(string,sizeof(string),"*[Hausinfo]*\nBesitzer: %s\nMietpreis: %i$\nMieter: %i\n***",HausInfo[hausid][haus_besitzer],HausInfo[hausid][haus_mietpreis],HausInfo[hausid][haus_mieter]); //dürfte wohl klar sein
    HausInfo[hausid][haus_label] = Create3DTextLabel(string,0xFF00FF,HausInfo[hausid][haus_x],HausInfo[hausid][haus_y],HausInfo[hausid][haus_z],20,0,1); //Hier erstellen wir das Label. Die ID wird in HausInfo[hausid][haus_label] gespeichert (das ist wichtig für uns, da wir das Label später wieder löschen wollen!)
    }
    return print("Das Haus wurde erfolgreich geladen");
    }
    }


    ocmd:hauserstellen(playerid,params[])
    {
    new preis;
    new interior;
    if(sscanf(params,"ii",preis,interior))return SendClientMessage(playerid,Rot,"Fehler: /createhaus [Preis] [InnenraumID]");
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    CreateHaus(x,y,z,preis,"Niemand",interior);
    return 1;
    }

    Aah , danke :)


    Nur hab jetzt ist es wieder verbuggt ._.


    public DeagleEventTimer()
    {
    if(DeagleTime >= 1)
    {
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(deagleeventteilnehmer[i])
    {
    if(DeagleTime == 2)
    {
    SendClientMessage(i,Hellblau,"Das Event startet in 20 Sekunden.");
    }
    else if(DeagleTime == 7)
    {
    SendClientMessage(i,Hellblau,"Das Event startet in 15 Sekunden.");
    }
    else if(DeagleTime == 12)
    {
    SendClientMessage(i,Hellblau,"Das Event startet in 10 Sekunden.");
    }
    else if(DeagleTime == 19)
    {
    SendClientMessage(i,Hellblau,"Das Event startet in 3 Sekunden.");
    }
    else if(DeagleTime == 20)
    {
    SendClientMessage(i,Hellblau,"Das Event startet in 2 Sekunden.");
    }
    else if(DeagleTime == 21)
    {
    SendClientMessage(i,Hellblau,"Das Event startet in 1 Sekunde.");
    }
    else if(DeagleTime >= 22)
    {
    SendClientMessage(i,Hellblau,"Viel Glück!");
    TogglePlayerControllable(i,1);
    DeagleCheckTimer=SetTimer("DeagleCheck",1000,1);
    DeagleTime=0;
    KillTimer(DeagleTimer);
    }
    }
    }
    DeagleTime++;
    }
    }


    http://i.imgur.com/LYIrm.png

    Hey


    Hab n ziemlich großes Problem!


    Undzwar wenn ich ein Haus erstelle , sollte eigentlich das grüne Haus-Pickup erscheinen und darüber der 3D Text.


    Es sieht allerdings so aus:



    Und wenn man durchläuft bekommt man Geld , die Nachricht und den Sack, der bei dem Bankraub-pickup gegeben werden soll!


    Spoiler anzeigen


    new tresorgeld;

    Spoiler anzeigen
    if(pickupid==tresorgeld)
    {
    DestroyPickup(tresorgeld);
    new rand=random(30000);
    if(rand<=5000)
    {
    rand+=5000;
    }
    aGivePlayerMoney(playerid,rand);
    new string[256];
    format(string,sizeof(string),"Du hast %d$ erbeutet ! Fliehe schnell !",rand);
    SendClientMessage(playerid,Orange,string);
    SendClientMessage(playerid,Orange,"Der Sack auf deinem Rücken fällt sehr auf!");
    SendClientMessage(playerid,Orange,"Du solltest lieber zum Checkpoint fahren und ihn loswerden.");
    SetPlayerCheckpoint(playerid,2163.6926,-1988.1489,14.0139,3.0);
    SetPlayerAttachedObject(playerid, 2, 1550, 15, -0.009999, 0.239999, -0.310000, 0.000000, 0.000000, 0.000000);
    }

    Spoiler anzeigen
    enum haus_info
    {
    haus_pickup
    }
    new HausInfo[MAX_HAUS][haus_info];

    Spoiler anzeigen
    HausInfo[hausid][haus_pickup] = CreatePickup(1273 ,23,HausInfo[hausid][haus_x],HausInfo[hausid][haus_y],HausInfo[hausid][haus_z]-0.1,0);

    Hey.


    Ich habn Deagle Event gescriptet , nur es ist verbuggt!


    Alleine klappt alles , nur zu 2+ nicht.


    Wir haben es zu 2. getestet , nur kommt im Chat statt 20 , 10 , 3 , 2 ,1 nur 20 , 3 , 1 undn icht weiter , man wird auch nicht unfreezed , ausser der , der das Event gestartet hat.



    forward DeagleEventTimer();
    forward DeagleCheck();
    new bool:deagleeventteilnehmer[MAX_PLAYERS] = false;
    new bool:deagleeventaktiv = false;


    public OnPlayerDisconnect(playerid, reason)
    {
    if(deagleeventteilnehmer[playerid])
    {
    deagleeventteilnehmer[playerid]=false;
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(deagleeventteilnehmer[i])
    {
    new string[128];
    format(string,sizeof(string),"%s ist raus!",PlayerName(playerid));
    SendClientMessage(i,Grau,string);
    }
    }
    }


    public OnPlayerDeath(playerid, killerid, reason)
    {
    if(deagleeventteilnehmer[playerid])
    {
    deagleeventteilnehmer[playerid]=false;
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(deagleeventteilnehmer[i])
    {
    new string[128];
    format(string,sizeof(string),"%s ist raus!",PlayerName(playerid));
    SendClientMessage(i,Grau,string);
    }
    }
    }


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid==Dialog_DeagleEventFrage)
    {
    if(response==0)
    {

    }
    if(response==1)
    {
    new Spieler[64];
    format(Spieler,sizeof(Spieler),"Spieler/%s.txt",PlayerName(playerid));
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    dini_FloatSet(Spieler,"X",x);
    dini_FloatSet(Spieler,"Y",y);
    dini_FloatSet(Spieler,"Z",z);
    dteilnehmer++;
    new rand = random(13);
    SetPlayerPos(playerid,deagleeventpos[rand][deagle_x],deagleeventpos[rand][deagle_y],deagleeventpos[rand][deagle_z]);
    SetPlayerFacingAngle(playerid,deagleeventpos[rand][deagle_za]);
    TogglePlayerControllable(playerid,0);
    GivePlayerWeapon(playerid,24,999);
    SetPlayerArmour(playerid,100);
    SetPlayerHealth(playerid,100);
    deagleeventteilnehmer[playerid]=true;
    }
    }


    if(deagleeventaktiv)
    {
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(deagleeventteilnehmer[i])
    {
    SendClientMessage(playerid,Hellblau,"Das Event wurde gestartet!");
    DeagleTime = 2;
    DeagleTimer = SetTimer("DeagleEventTimer",1000,1);
    }
    }
    }
    else
    {
    SendClientMessage(playerid,Rot,"Es ist kein Event vorbereitet!");
    }


    public DeagleCheck()
    {
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(dteilnehmer==1)
    {
    if(deagleeventteilnehmer[i])
    {
    new string[256];
    format(string,sizeof(string),"%s hat das Deagle Event gewonnen!",PlayerName(i));
    SendClientMessageToAll(Hellblau,string);
    GivePlayerMoney(i,25000);
    SendClientMessage(i,Hellblau,"Herzlichen Glückwunsch! Du hast das Event gewonnen. Du erhälst nun 25.000€ Gewinn.");
    deagleeventteilnehmer[i]=false;
    SetPlayerArmour(i,0);
    SetPlayerHealth(i,100);
    ResetPlayerWeapons(i);
    new Spieler[64];
    format(Spieler,sizeof(Spieler),"Spieler/%s.txt",PlayerName(i));
    SetPlayerPos(i,dini_Float(Spieler,"X"),dini_Float(Spieler,"Y"),dini_Float(Spieler,"Z"));
    SetCameraBehindPlayer(i);
    KillTimer(DeagleCheckTimer);
    }
    }
    }
    }


    public DeagleEventTimer()
    {
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(deagleeventteilnehmer[i])
    {
    if(DeagleTime >= 1)
    {
    if(DeagleTime == 2)
    {
    SendClientMessage(i,Hellblau,"Das Event startet in 20 Sekunden.");
    }
    else if(DeagleTime == 7)
    {
    SendClientMessage(i,Hellblau,"Das Event startet in 15 Sekunden.");
    }
    else if(DeagleTime == 12)
    {
    SendClientMessage(i,Hellblau,"Das Event startet in 10 Sekunden.");
    }
    else if(DeagleTime == 19)
    {
    SendClientMessage(i,Hellblau,"Das Event startet in 3 Sekunden.");
    }
    else if(DeagleTime == 20)
    {
    SendClientMessage(i,Hellblau,"Das Event startet in 2 Sekunden.");
    }
    else if(DeagleTime == 21)
    {
    SendClientMessage(i,Hellblau,"Das Event startet in 1 Sekunde.");
    }
    else if(DeagleTime == 22)
    {
    SendClientMessage(i,Hellblau,"Viel Glück!");
    TogglePlayerControllable(i,1);
    DeagleCheckTimer=SetTimer("DeagleCheck",1000,1);
    KillTimer(DeagleTimer);
    }
    }
    DeagleTime++;
    }
    }
    }

    1. Das SetPlayerPos kannst du dir sparen, der ist automatisch beim Aufzeichnungsort. Und soweit ich weiß, musst du ihm auch keine Waffe geben. Wenn er einfach nur da steht, obwohl er bei der Aufzeichnung des NPCs geschossen hat, dann geh kurz aus dem Gebiet raus und wieder rein - dann dürfte er schießen.


    ne er soll nur mit der Waffe rumstehen ;)


    Ich dachte , man müsste ihm die Waffe nach dem Aufzeichnen geben , und nicht die Waffe beim Aufzeichnen tragen :)


    Edit: Achso , ich wollte nämlich machen , dass er dasteht mit einer Waffe , damit er gefährlicher wirkt :thumbup:


    Edit2:


    Neues Problem:
    Ich möchte , dass man mit /verkaufewaffe [ID/Name] [Waffe] [Preis] jemanden eine Waffe verkaufen kann.
    Dieser bekommt dann einen Dialog , wo er [Okay] und [Abbrechen] wählen kann. Wenn er okay wählt , wird ihm die Waffe gegeben und das Geld abgezogen und dem Waffendealer das Geld gegeben. Nur wie geht das?


    Der Command sieht so aus:


    ocmd:verkaufewaffe(playerid,params[])
    {
    new pID,waffe[64],preis;
    new Spieler[64];
    format(Spieler,sizeof(Spieler),"Spieler/%s.txt",PlayerName(playerid));
    if(sscanf(params,"us[64]i",pID,waffe,preis))return SendClientMessage(playerid,Rot,"Fehler: /verkaufewaffe [ID/Name] [Waffe] [Preis]");
    {
    if(strcmp(waffe,"deagle",false)==0)
    {
    if(dini_Int(Spieler,"Materialien")<=matsprodeagle)return SendClientMessage(playerid,Rot,"Du hast nicht genug Materialien für diese Waffe!");
    new string[256];
    format(string,sizeof(string),"Waffendealer %s bietet dir eine Deagle mit 80 Munition für %i€ an.",PlayerName(playerid),preis);
    ShowPlayerDialog(pID,Dialog_WaffenangebotDeagle,DIALOG_STYLE_MSGBOX,"Waffenangebot",string,"Okay","Abbrechen");
    }
    else if(strcmp(waffe,"9mm",false)==0)
    {
    if(dini_Int(Spieler,"Materialien")<=matspro9mm)return SendClientMessage(playerid,Rot,"Du hast nicht genug Materialien für diese Waffe!");
    new string[256];
    format(string,sizeof(string),"Waffendealer %s bietet dir eine 9MM mit 100 Munition für %i€ an.",PlayerName(playerid),preis);
    ShowPlayerDialog(pID,Dialog_Waffenangebot9mm,DIALOG_STYLE_MSGBOX,"Waffenangebot",string,"Okay","Abbrechen");
    }
    else if(strcmp(waffe,"mp5",false)==0)
    {
    if(dini_Int(Spieler,"Materialien")<=matspromp5)return SendClientMessage(playerid,Rot,"Du hast nicht genug Materialien für diese Waffe!");
    new string[256];
    format(string,sizeof(string),"Waffendealer %s bietet dir eine MP5 mit 150 Munition für %i€ an.",PlayerName(playerid),preis);
    ShowPlayerDialog(pID,Dialog_Waffenangebotmp5,DIALOG_STYLE_MSGBOX,"Waffenangebot",string,"Okay","Abbrechen");
    }
    else if(strcmp(waffe,"m4",false)==0)
    {
    if(dini_Int(Spieler,"Materialien")<=matsprom4)return SendClientMessage(playerid,Rot,"Du hast nicht genug Materialien für diese Waffe!");
    new string[256];
    format(string,sizeof(string),"Waffendealer %s bietet dir eine M4 mit 150 Munition für %i€ an.",PlayerName(playerid),preis);
    ShowPlayerDialog(pID,Dialog_Waffenangebotm4,DIALOG_STYLE_MSGBOX,"Waffenangebot",string,"Okay","Abbrechen");
    }
    else if(strcmp(waffe,"ak47",false)==0)
    {
    if(dini_Int(Spieler,"Materialien")<=matsproak47)return SendClientMessage(playerid,Rot,"Du hast nicht genug Materialien für diese Waffe!");
    new string[256];
    format(string,sizeof(string),"Waffendealer %s bietet dir eine Ak47 mit 150 Munition für %i€ an.",PlayerName(playerid),preis);
    ShowPlayerDialog(pID,Dialog_Waffenangebotak47,DIALOG_STYLE_MSGBOX,"Waffenangebot",string,"Okay","Abbrechen");
    }
    else if(strcmp(waffe,"blumen",false)==0)
    {
    if(dini_Int(Spieler,"Materialien")<=matsproblumen)return SendClientMessage(playerid,Rot,"Du hast nicht genug Materialien für diese Waffe!");
    new string[256];
    format(string,sizeof(string),"Waffendealer %s bietet dir Blumen für %i€ an.",PlayerName(playerid),preis);
    ShowPlayerDialog(pID,Dialog_WaffenangebotBlumen,DIALOG_STYLE_MSGBOX,"Waffenangebot",string,"Okay","Abbrechen");
    }
    else
    {
    SendClientMessage(playerid,Rot,"Die Waffe existiert nicht!");
    }
    }
    return 1;
    }


    Es muss ja irgendwas in OnDialogResponse sein!

    Hey :3


    Wie kann ich einem NPC eine Waffe geben?


    Ich habe es jetzt so , er wird aber nur teleportiert und der Skin wird gesetzt!



    if(!strcmp(botname, "Waffendealer", true))
    {
    SetPlayerPos(playerid,-1978.4358,428.3746,24.8660);
    GivePlayerWeapon(playerid,30,500);
    SetPlayerSkin(playerid,272);
    }

    ^^ aber was ist da schon schwierig daran


    1. die include in den includes ordner wo sich das programm pawno befindet
    2. In die Server.cfg streamer.so oder streamer.dll je nach betriebssystem so = Linux , dll = Windows
    3. oben ins filterscript #include <streamer> schreiben
    4. danach die ganzen codes CreateObject mit CreateDynamicObject ersetzen
    5. compilen fertig


    Habs ja genau so gemacht , nur die Objekte werden nicht erstellt ._.