GetPVarString

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
  • Hey, habe ein Problem mit GetPVarString.
    Habe paar Befehle gescriptet, die jedoch nicht funktionieren.


    Denke mal wenn ihr euch das alles anseht, wisst ihr bescheid:


    ocmd:repair(playerid,params[],string[128],str[128],pring[64],mechaniker[64])
    {
    new pID,price;
    if(!PlayerJob(playerid,4))return SendClientMessage(playerid,Rot,"Du bist kein Mechaniker!");
    if(!IsPlayerInVehicle(playerid,552))return SendClientMessage(playerid,Rot,"Du bist in keinem Mechaniker-Fahrzeug!");
    if(sscanf(params,"ui",pID,price))return SendClientMessage(playerid,Rot,"Benutzung: /repair [Spieler] [Preis]");
    if(!IsPlayerInAnyVehicle(pID))return SendClientMessage(playerid,Rot,"Dieser Spieler ist in keinem Fahrzeug!");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,Rot,"Dieser Spieler ist nicht Online!");
    format(string,128,"Mechaniker: %s bietet dir eine Reparatur für %i$ an.",SpielerName(playerid),price);
    format(str,128,"Du bietest %s eine Reparatur für %i$ an.",SpielerName(pID),price);
    format(pring,64,"%i",price);
    format(mechaniker,64,"%s",SpielerName(playerid));
    SendClientMessage(pID,Weiss,string);
    SendClientMessage(pID,Blau,"Tippe /arepair, dein Fahrzeug reparieren zu lassen.");
    SendClientMessage(playerid,Weiss,str);
    SetPVarInt(pID,"MechanicRepair",1);
    SetPVarString(pID,"MechanicPreisRepair",pring);
    SetPVarString(pID,"MechanikerRepair",mechaniker);
    return 1;
    }


    ocmd:arepair(playerid,string[128])
    {
    new Float:x,Float:y,Float:z;
    GetPlayerPos(GetPVarString(playerid,"MechanikerRepair",mechaniker,64),x,y,z);
    if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,Rot,"Du bist in keinem Fahrzeug!");
    if(!IsPlayerInRangeOfPoint(playerid,15,x,y,z))return SendClientMessage(playerid,Rot,"Du bist nicht in der Nähe des Mechanikers!");
    if(GetPVarInt(playerid,"MechanicRepair",mechaniker,64) == 0)return SendClientMessage(playerid,Rot,"Dir wurde keine Reparatur angeboten!");
    GivePlayerMoney(GetPVarInt(playerid,"MechanikerRepair",mechaniker,64),GetPVarString(playerid,"MechanicPreisRepair",pring,64));
    GivePlayerMoney(playerid,-GetPVarString(playerid,"MechanicPreisRepair",pring,64));
    format(string,128,"**%s repariert %s's Fahrzeug.",SpielerName(GetPVarString(playerid,"MechanikerRepair",mechaniker,64)),SpielerName(playerid));
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(!IsPlayerInRangeOfPoint(i,5,x,y,z))continue;
    if(!IsPlayerConnected(i))continue;
    SendClientMessage(i,Lila,string);
    }
    RepairVehicle(GetPlayerVehicleID(playerid));
    DeletePVar(playerid,"MechanicRepair");
    DeletePVar(playerid,"MechanicPreisRepair");
    DeletePVar(playerid,"MechanikerRepair");
    return 1;
    }


    Error:

    Zitat

    Undefined Symbol: pring
    Undefined Symbol: mechaniker


    usw


    Wie kann ich das sonst noch machen?

  • Nimm es aus dem ocmd oben raus und schieb es in die new ... zeile.
    Gilt übrigens für alles nach dem params.


    ocmd:repair(playerid,params[],string[128],str[128],pring[64],mechaniker[64])


    ocmd:repair(playerid,params[])


    new pID,price,string[128],str[128],pring[64],mechaniker[64];

    KleineHilfe 2.0


  • Ist doch kein Unterschied...


    Er zeigt 1. Trotzdem noch den Error an und 2. Warum sollte das so sein?

  • Ja... Habs zwar jetzt global, doch wenn ich jetzt z.B. /arefill ( refill annehme ) steht dort : "** tankt [GSL]Erik's Fahrzeug auf." anstatt: "**Testname tankt [GSL]Erik's Fahrzeug auf."


    GetPVarString(playerid,"Test",test,64); habs halt so ueberall, funzt aber nicht... Was soll ich tun? :/


  • Geht leider nicht...


    Argument 3


    Also fehlt der string vor der ,128


    und es funzt nicht :(

  • Ihr wisst alle nicht wie man GetPVarString benutzt,postet aber dennoch "Hilfe" die nichts bringt.



    http://wiki.sa-mp.com/wiki/GetPVarString
    public OnPlayerConnect(playerid,reason)
    {
    new pmsg[128];
    GetPVarString(playerid, "msg", pmsg, 128);// Get the msg string from the PVar
    printf("Player Message: %s", pmsg);// will print 'Player Message: *message*'
    return 1;
    }


    Beispiel an deinem Problem:
    // /arepair
    new mechaniker[MAX_PLAYER_NAME];
    GetPVarString(playerid,"MechanikerRepair",mechaniker,sizeof(mechaniker));
    printf("Mechaniker war Spieler %s",mechaniker);

  • Fehler gefunden!


    format(string,128,"**%s repariert %s's Fahrzeug.",SpielerName(GetPVarString(playerid,"MechanikerRepair",mechaniker,sizeof(mechaniker))),SpielerName(playerid));


    Muss so:


    format(string,128,"**%s repariert %s's Fahrzeug.",SpielerName(sizeof(mechaniker)),SpielerName(playerid));


    Danke nochmal an Goldkiller!


  • format(string,128,"**%s repariert %s's Fahrzeug.",SpielerName(sizeof(mechaniker)),SpielerName(playerid));


    Glaub ich dir nicht so wirklich,dass das Fehlerfrei funktioniert.
    SpielerName(sizeof(mechaniker))
    Das ist nämlich auch totaler Blödsinn.
    sizeof(mechaniker) wird dir den Wert 24 geben. Heißt also:
    SpielerName(24)
    Es würde so also nur funktionieren,wenn der Spieler der einen repariert wirklich die ID 24 hat.
    In der Variable "mechaniker" steckt schon der Name des Spielers, daher brauchst du nicht mit der Funktion SpielerName arbeiten.


    format(string,128,"**%s repariert %s's Fahrzeug.",/*SpielerName(sizeof(*/mechaniker/*))*/,SpielerName(playerid));

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

  • Ja, hast eig recht :)


    Aber dachte, ich kriegs damit ehh nicht mehr hin und habe mich deswegen für Enums entschieden...


    Ist viel einfacher und wie andere sagen, Ressourcenschonender usw


    Aber nochmal Danke :)