/repair (ocmd)

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Guten Morgen liebe User,


    ich hab versucht einen /repair zu Scripten. Wie mache ich das mit dem Dialog ? Weil er zeigt mir den Fehler an das pID nicht def. wer.


    Hier mal mein Code:


    ocmd:repair(playerid,params[])
    {
    new pID;
    if(!SpielerInfo[playerid][Job] == 1))return SendClientMessage(playerid,Rot,"Du bist kein Mechaniker.");
    if(sscanf(params,"u",pID)) return SendClientMessage(playerid,Hellblau,"/repair [ID]");
    ShowPlayerDialog(pID,DIALOG_ME,DIALOG_STYLE_MSGBOX,"Mechaniker - Repair","Dir wird eine Reperatur für 90$ angeboten.","Annehmen","Ablehnen");
    return 1;
    }


    if(dialogid==DIALOG_ME)
    {
    if(reponse==0)
    {
    format(string,sizeof(string),"Dein Auftrag wurde von %s Abgelehnt",pID);
    SendClientMessage(playerid,Rot,string);
    return 1;
    }}
    return 1;


    Also wenn er auf Nein klickt soll der Mechaniker die Meldung bekommen

  • Steht doch da? :'O


    Also ich will es so:


    Mechaniker gibt den Befehl ein. Bei der Person soll der Dialog erscheinen. Wenn er auf Annehmen klickt soll es Repariert werden wenn nicht soll der Mechaniker eine Nachricht dazu bekommen. Das geht nicht -.-


    Weiß denn keiner wie das geht ? -.-

    Einmal editiert, zuletzt von Eric_HD () aus folgendem Grund: edt

  • Mahc das in dein Script rein
    stock Spielername(playerid)
    {
    new xn[MAX_PLAYER_NAME];
    GetPlayerName(playerid,xn,sizeof xn);
    return xn;
    }


    Und dann
    if(dialogid==DIALOG_ME)
    {
    if(reponse==0)
    {
    format(string,sizeof(string),"Dein Auftrag wurde von %s Abgelehnt",Spielername(pID));
    SendClientMessage(playerid,Rot,string);
    return 1;
    }
    }
    return 1;
    Dann sollte es klappen

    Stahlbau Azubi deswegen kaum Aktiv

  • Das bringt rein garnix, ausser dass der Name angezeigt ist.
    PId ist bei dialogresponse nicht definiert.
    Save die playerid des mechanikers im oberen Teil,
    Und frag Sie dann bei dialogrespobse wieder ab.


    Zb mit setpvarint(pId, "mechanikerid", playerid);
    Und unten:
    pId = getpvarint(playerid, "mechanikerid");

  • Oder man macht es einfacher:
    Ganz oben:
    new Spielerid[MAX_PLAYERS], Gegnerid[MAX_PLAYERS];


    ocmd:repair(playerid,params[])
    {
    new pID;
    if(!SpielerInfo[playerid][Job] == 1))return SendClientMessage(playerid,Rot,"Du bist kein Mechaniker.");
    if(sscanf(params,"u",pID)) return SendClientMessage(playerid,Hellblau,"/repair [ID]");
    Spielerid[playerid] = playerid;
    Gegnerid[playerid] = pID;
    ShowPlayerDialog(pID,DIALOG_ME,DIALOG_STYLE_MSGBOX,"Mechaniker - Repair","Dir wird eine Reperatur für 90$ angeboten.","Annehmen","Ablehnen");
    return 1;
    }


    if(dialogid==DIALOG_ME)
    {
    if(reponse==0)
    {
    format(string,sizeof(string),"Dein Auftrag wurde von %s Abgelehnt",Gegnerid[playerid]);
    SendClientMessage(Spielerid[playerid],Rot,string);
    return 1;
    }
    }
    Das ganze ist ungetestet sieht aber akzeptabel aus.

  • Also ich hab es so:


    [pwn]if(dialogid==DIALOG_ME){
    if(response==0){
    format(string,sizeof(string),"Dein Auftrag wurde von %s Abgelehnt",Gegnerid[playerid]);
    SendClientMessage(Spielerid[playerid],Rot,string);
    return 1;
    }
    if(response==1){
    if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,Rot,"Der Spieler ist in keinem Fahrzeug.");
    RepairVehicle(GetPlayerVehicleID(Gegnerid[playerid]));
    SendClientMessage(playerid,Grün,"Deine Anfrage wurde Angenommen. Du erhälst 90$.");
    GivePlayerMoney(Gegnerid[playerid],-90);
    GivePlayerMoney(playerid,90);
    return 1;
    }
    }[/pwn]


    Bei mir kommt der andere die Meldung und das Geld, nicht der Mechaniker.
    Helft mir

  • ach kommschon, dann vertausch einfah die beiden playerid's, das wird doch nicht so schwer sein ?
    im zweiten teil hat der die "playerid", der im ersten die pId hatte, und andersrum...
    geht nicht anders...^^

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen

  • Das is doch irwie a schmarrn oder ? ;D
    Spielerid[playerid]=playerid; bewirkt mal wieder sehr viel....


    nimm das hier.. auch wenn dann noch viel unnützes zeug im oberen teil steht...
    aber mit c&p erhält man eben nie etwas besseres

  • dann kriegste eben den letzten fetzen auch noch gemacht ;)



    ocmd:repair(playerid,params[])
    {
    new pID;
    if(!SpielerInfo[playerid][Job] == 1))return SendClientMessage(playerid,Rot,"Du bist kein Mechaniker.");
    if(sscanf(params,"u",pID)) return SendClientMessage(playerid,Hellblau,"/repair [ID]");
    Gegnerid[pID] = playerid;
    ShowPlayerDialog(pID,DIALOG_ME,DIALOG_STYLE_MSGBOX,"Mechaniker - Repair","Dir wird eine Reperatur für 90$ angeboten.","Annehmen","Ablehnen");
    return 1;
    }

    Einmal editiert, zuletzt von Sry4pwn ()

  • Also ich hab es so:


    ocmd:repair(playerid,params[]){
    new pID;
    if(SpielerInfo[playerid][Job] != 1)return SendClientMessage(playerid,Rot,"Du bist kein Mechaniker.");
    if(sscanf(params,"u",pID)) return SendClientMessage(playerid,Rot,"/repair [ID]");
    Gegnerid[pID] = playerid;
    ShowPlayerDialog(pID,DIALOG_ME,DIALOG_STYLE_MSGBOX,"Mechaniker - Repair","Dir wird eine Reperatur für 90$ angeboten.","Annehmen","Ablehnen");
    return 1;
    }


    if(dialogid==DIALOG_ME)
    {
    if(response==0)
    {
    format(string,sizeof(string),"Dein Auftrag wurde von %s Abgelehnt",playerid);
    SendClientMessage(Gegnerid[playerid],Rot,string);
    return 1;
    }
    if(response==1){
    new pID=Gegnerid[playerid];
    if(!IsPlayerInAnyVehicle(pID))return SendClientMessage(pID,Rot,"Der Spieler ist in keinem Fahrzeug.");
    RepairVehicle(GetPlayerVehicleID(playerid));
    SendClientMessage(pID,Grün,"Deine Anfrage wurde Angenommen. Du erhälst 90$.");
    GivePlayerMoney(playerid,-90);
    GivePlayerMoney(pID,90);
    return 1;
    }
    }


    Also das Annehmen funktioniert soweit, wenn ich auf Ablehnen klicke, steht da kein Name.

  • Hey ich weiß nicht ob du das mit PVarInt machst aber hier so würde ich es machen :D



    SetPVarInt(pID, "Mechaniker", playerid);
    Musst du im Befehl des Mechanikers einschreiben.


    Und im Dialog dann:
    SendClientMessage(GetPVarInt(playerid, "Mechaniker"),Rot,string); Da nimmt er die ID von dem Mechaniker wo oben im Befehl gespeichert wurde. Das bringt schonmal
    das es an den Mechaniker gesendet wird, im String wird aber der richtige Name nicht rausgelesen. Habe ich ehrlich gesagt gerade null bock alles zu testen, also ich verspreche nichts.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen