Biz system problem

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
  • Ich möchte Create biz machen und ich denke der code heißt was ich will :D
    Der sagt mir unten bei CreateBiz falscher paramater


    ocmd:createbiz(playerid,params[])
    {
    for(new biz = 1; biz<MAX_BIZ; biz++)
    {
    if(pInfo[playerid][padmin] >=1337)
    {
    new name, level, preis, kasse, interior, string[128];
    if(sscanf(params,"siiii",name, level, preis, kasse, interior))return SendClientMessage(playerid,COLOR_GRAU,"Verwendung: /createbiz [bizname] [level] [kaufpreis] [kasse] [interiorid 0-1]");
    name = bInfo[biz][bname];
    level = bInfo[biz][blevel];
    preis = bInfo[biz][bkaufpreis];
    kasse = bInfo[biz][bkasse];
    interior = bInfo[biz][binterior];
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    format(string,sizeof(string),"%s\n%d\n%d\n%d\n%d",name,level,preis,kasse,interior);
    CreateBiz(string);
    }
    else
    {
    SendClientMessage(playerid,COLOR_GRAU,"Du bist nicht befugt diesen befehl zu nutzen!");
    }
    return 1;
    }
    return 1;
    }


    stock CreateBiz(Float:x,Float:y,Float:z,bizname[40],besitzer[50],level,kpreis,kasse,interior)
    {
    new pfad[64];
    for(new biz; biz<MAX_BIZ; biz++)
    {
    format(pfad,sizeof(pfad),"/Biz/%d.txt",biz);
    if(!fexist(pfad))
    {
    dini_Create(pfad);
    dini_FloatSet(pfad,"x",x);
    dini_FloatSet(pfad,"y",y);
    dini_FloatSet(pfad,"z",z);
    dini_Set(pfad,"bizname",bizname);
    dini_Set(pfad,"besitzer",besitzer);
    dini_IntSet(pfad,"level",level);
    dini_IntSet(pfad,"preis",kpreis);
    dini_IntSet(pfad,"kasse",kasse);
    dini_IntSet(pfad,"interior",interior);
    return LadeBiz(biz);
    }
    }
    return 0;
    }


  • ocmd:createbiz(playerid,params[])
    {
    for(new biz = 1; biz<MAX_BIZ; biz++)
    {
    if(pInfo[playerid][padmin] >=1337)
    {
    new name[64], level, preis, kasse, interior;
    if(sscanf(params,"siiii",name, level, preis, kasse, interior))return SendClientMessage(playerid,COLOR_GRAU,"Verwendung: /createbiz [bizname] [level] [kaufpreis] [kasse] [interiorid 0-1]");
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    CreateBiz(x,y,z,name,"Niemand",level,preis,kasse,interior);
    }
    else
    {
    SendClientMessage(playerid,COLOR_GRAU,"Du bist nicht befugt diesen befehl zu nutzen!");
    }
    return 1;
    }
    return 1;
    }

  • CreateBiz(Float:x,Float:y,Float:z,bizname[40],besitzer[50],level,kpreis,kasse,interior)


    Man sieht du ahst als erstes X Y u. Z allerdings nutzt du in deinem String


    format(string,sizeof(string),"%s\n%d\n%d\n%d\n%d",name,level,preis,kasse,interior);


    Als erstes %s und nichts %f .


    Du gibt 5 Sachen an allerdings werden 9 verlangt mach es so


    format(string,sizeof(string),"%f,%f,%f,"Niemand",%s,%d,%d,%d,%d",x,y,zname,level,preis,kasse,interior);


  • Das ist immer noch nicht richtig.
    Du gibst den Besitzer, der ebenfalls verlangt wird, nicht mit an.
    Außerdem würde ich statt dem %d ein %i benutzen, da du direkt eine ganze Zahl eingibst.
    Es gibt keinen Interior, der 1.2 oder 6.9 als Wert hat.

  • Also alles klappt bereits nur er macht nicht das was ich will.
    Mit dem CreateBiz befehl will ich das Level, kaufpreis,bizname, usw alles selber bestimmen
    Wenn ich Aber zb als Biz name Cafe nehme schreibt er bei dem Erstellen was anderes sondern das "unarmed".
    Und kaufpreis + level + kasse schreibt er alles 0 hin.


    ocmd:createbiz(playerid,params[])
    {
    for(new biz = 1; biz<MAX_BIZ; biz++)
    {
    if(pInfo[playerid][padmin] >=1337)
    {
    new b_bname[40], level, preis, kasse, interior;
    if(sscanf(params,"siiii",b_bname[39], level, preis, kasse, interior))return SendClientMessage(playerid,COLOR_GRAU,"Verwendung: /createbiz [bizname] [level] [kaufpreis] [kasse] [interiorid 0-1]");
    b_bname = bInfo[biz][bname];
    level = bInfo[biz][blevel];
    preis = bInfo[biz][bkaufpreis];
    kasse = bInfo[biz][bkasse];
    interior = bInfo[biz][binterior];
    new pfad[50];
    format(pfad,50,"/Biz/%d,txt",biz);
    dini_Set(pfad,"bizname",b_bname);
    dini_IntSet(pfad,"level",level);
    dini_IntSet(pfad,"preis",preis);
    dini_IntSet(pfad,"kasse",kasse);
    dini_IntSet(pfad,"interior",interior);
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    CreateBiz(x,y,z,b_bname,"Keiner",level,preis,kasse,interior);
    }
    else
    {
    SendClientMessage(playerid,COLOR_GRAU,"Du bist nicht befugt diesen befehl zu nutzen!");
    }
    return 1;
    }
    return 1;
    }

  • Ich benutze sscanf immer so dass der String am ende ist, aber ich glaube es geht auch wenn man ihn eine bestimmte Länge zuweist.
    So wie du es gerade hast würde er alles zum String zählen, da er ja nicht weiß wo du den neuen Wert haben willst.
    Versuch mal:

    ocmd:createbiz(playerid,params[])
    {
    for(new biz = 1; biz<MAX_BIZ; biz++)
    {
    if(pInfo[playerid][padmin] >=1337)
    {
    new b_bname[40], level, preis, kasse, interior;
    if(sscanf(params,"s[39]iiii",b_bname[39], level, preis, kasse, interior))return SendClientMessage(playerid,COLOR_GRAU,"Verwendung: /createbiz [bizname] [level] [kaufpreis] [kasse] [interiorid 0-1]");
    b_bname = bInfo[biz][bname];
    level = bInfo[biz][blevel];
    preis = bInfo[biz][bkaufpreis];
    kasse = bInfo[biz][bkasse];
    interior = bInfo[biz][binterior];
    new pfad[50];
    format(pfad,50,"/Biz/%d,txt",biz);
    dini_Set(pfad,"bizname",b_bname);
    dini_IntSet(pfad,"level",level);
    dini_IntSet(pfad,"preis",preis);
    dini_IntSet(pfad,"kasse",kasse);
    dini_IntSet(pfad,"interior",interior);
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    CreateBiz(x,y,z,b_bname,"Keiner",level,preis,kasse,interior);
    }
    else
    {
    SendClientMessage(playerid,COLOR_GRAU,"Du bist nicht befugt diesen befehl zu nutzen!");
    }
    return 1;
    }
    return 1;
    }