Server Unknown Command(dcmd)(SII)

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
  • Tag liebe Community.


    Habe hier ein kleines Prob.Ich möchte eine Tanke ingame erstellen und die durch SII speichern.
    Doch irgendwie zeigt er mir immer Server Unknown Command an.Why?


    Hier der Befehl.dcmd_newtanke(playerid,params[])
    {
    new
    tapreis,
    tlapreis,
    tlinhalt;
    if(IsPlayerConnected(playerid))
    {
    if(sscanf(params,"ddd",tapreis,tlapreis,tlinhalt)) return SendClientMessage(playerid,COLOR_ADMINCMD,"Benutze: /newtanke [Preis] [Preisproliter] [Inhalt]");
    {
    printf("Tanke erstellt");
    new Float:Pos[3];
    GetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]);
    TankInfo[Created_Tankstellen][X] = (Pos[0]);
    TankInfo[Created_Tankstellen][Y] = (Pos[1]);
    TankInfo[Created_Tankstellen][Z] = (Pos[2]);
    strmid(TankInfo[Created_Tankstellen][tbesitzer],"None",0,38,38);
    TankInfo[Created_Tankstellen][tpreis] = (tapreis);
    TankInfo[Created_Tankstellen][tlpreis] = (tlapreis);
    TankInfo[Created_Tankstellen][tinhalt] = (tlinhalt);
    CreatePickup(1272,1,Pos[0],Pos[1],Pos[2]);
    CreateMapIcon(42,0,Pos[0],Pos[1],Pos[2]);
    printf("Tanke erstellt2");
    Created_Tankstellen++;
    SendClientMessage(playerid,COLOR_GREY,"Tankstelle erstellt");
    }
    }
    return 1;
    }

    Sie brauchen Hilfe bei Linux oder Windows Servern? Wissen nicht, wie man am besten ein Forum o. a. installiert? Dann schreiben Sie mir eine PN und ich versuche Ihnen zu helfen!

  • Jap...


    PS: Der Befehl geht bis zum printf("Tanke erstellt");
    Weil printf("Tanke erstellt2"); wird mir nicht angezeigt


    EDIT: So,der befehl geht nur,wenn ich LoadTanken rausmache.Hier LoadTanken:


    stock LoadTanken()
    {
    if(INI_Open("/Tanken/tanken.cfg"))
    {
    new loader[128];
    for(new i=0;i<MAX_T;i++)
    {
    format(loader,sizeof(loader),"X_%d",i);
    TankInfo[i][X] = INI_ReadFloat(loader);
    format(loader,sizeof(loader),"Y_%d",i);
    TankInfo[i][Y] = INI_ReadFloat(loader);
    format(loader,sizeof(loader),"Z_%d",i);
    TankInfo[i][Z] = INI_ReadFloat(loader);
    format(loader,sizeof(loader),"tbesitzer_%d",i);
    INI_ReadString(TankInfo[i][tbesitzer],loader,MAX_PLAYER_NAME);
    format(loader,sizeof(loader),"tpreis_%d",i);
    TankInfo[i][tpreis] = INI_ReadInt(loader);
    format(loader,sizeof(loader),"tlpreis_%d",i);
    TankInfo[i][tlpreis] = INI_ReadInt(loader);
    format(loader,sizeof(loader),"tinhalt_%d",i);
    TankInfo[i][tinhalt] = INI_ReadInt(loader);
    format(loader,sizeof(loader),"Owned_%d",i);
    TankInfo[i][Owned] = INI_ReadInt(loader);
    Created_Tankstellen++;
    }
    INI_Close();
    }
    return 1;
    }


    Ich hoffe es kennen sich welche noch mit SII aus.


    SRY für den Push,aber ich brauche das dringend,kommt schon...


    Dumme Frage,per Dini kann man dies nichtmachen oder?Das man ingame sachen erstellen kann,die dann gespeichert werden wenn der Server beendet wird?

    Sie brauchen Hilfe bei Linux oder Windows Servern? Wissen nicht, wie man am besten ein Forum o. a. installiert? Dann schreiben Sie mir eine PN und ich versuche Ihnen zu helfen!

    3 Mal editiert, zuletzt von Davkus ()

  • Du musst immer so denken, das wenn du die Tankstellen lädst auch abfragen musst ob du sie erstellt hast,
    denn du hast bestimmt nicht soviel Tankstellen wie in MAX_T deklariert ist also bau dir nen Key ein der zurückgibt
    ob sie exestiert, da der Standard wert 0 beträgt kannst du die Zahlen nach dem True/False Prinzip nutzen ^^

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • Ja und wie überprüfe ich das?
    Ich mein,wenn ich LoadTanken aus GameModeInit draußen habe,klappt ja alles Prima.Nur wenn LoadTanken drinne ist,funzt der befehl nicht.
    Also muss odch irgendwass am LoadTanken falsch sein oder?

    Sie brauchen Hilfe bei Linux oder Windows Servern? Wissen nicht, wie man am besten ein Forum o. a. installiert? Dann schreiben Sie mir eine PN und ich versuche Ihnen zu helfen!

  • Denk Key das die Tanke exestiert setzt du am besten wenn du die Tanke erstellst, sonst lädt er ja bis MAX_T , da aber nicht alle exestieren werden,
    und die Coords 0.0 und die Werte 0 oder Null String enthalten werden Tanken geladen die dann im Koordinaten Punkt 0.0 auf xyza erscheinen mit einem
    Non Besitzer und keinem bestimmten Preis

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • Was meinst du mit Key?


    Bin noch anfänger in Sii,kannst du vll mal ein Beispiel geben?
    Habe ja Oben meinen Tankstellen erstell befehl gepostet.

    Sie brauchen Hilfe bei Linux oder Windows Servern? Wissen nicht, wie man am besten ein Forum o. a. installiert? Dann schreiben Sie mir eine PN und ich versuche Ihnen zu helfen!

  • if(TankInfo[exist])
    {
    // Laden
    }

    vorher musst du aber exist als Integer wert laden ^^


    dieses ,,exist´´ setzt du auf 1 sobald du eine neue Tanke erstellst , beim Speichern muss genauso diese abfrage sein,
    damit er weiss ob die Tankstelle eig. erstellt wurde, ansonsten führt das auf 0 Zurück und es kann sein das einiges nicht mehr Funktioniert.

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • Hey Blackfox,


    zu SII hab ich auch noch ne Frage,


    ich speicher einen String.


    Und versuche ihn zu laden, aber er gibt nichts zurück das ehist es kommt 0 raus.



    INI_ReadString(HouseInfo[i][Besitzer],loader,MAX_PLAYER_NAME);



    Ein großes Prob bei mir.

  • Okay,der Befehl geht nun auch wenn die Tanken geladen werden.


    Nur iwie,werden die tanken nicht geladen,ingame sehe ich nichts...


    Mien Jetziges LoadTankInfo()


    stock LoadTankInfo()
    {
    if(INI_Open("/Tanken/tanken.cfg"))
    {
    if(TankInfo[Erstellte_Tanken][Exists])
    {
    new loader[128];
    for(new i=0;i<MAX_T;i++)
    {
    format(loader,sizeof(loader),"X_%d",i);
    TankInfo[i][X] = INI_ReadFloat(loader);
    format(loader,sizeof(loader),"Y_%d",i);
    TankInfo[i][Y] = INI_ReadFloat(loader);
    format(loader,sizeof(loader),"Z_%d",i);
    TankInfo[i][Z] = INI_ReadFloat(loader);
    format(loader,sizeof(loader),"Besitzer_%d",i);
    INI_ReadString(TankInfo[i][Besitzer],loader,MAX_PLAYER_NAME);
    format(loader,sizeof(loader),"Preis_%d",i);
    TankInfo[i][Preis] = INI_ReadInt(loader);
    format(loader,sizeof(loader),"Lpreis_%d",i);
    TankInfo[i][Lpreis] = INI_ReadInt(loader);
    format(loader,sizeof(loader),"Inhalt_%d",i);
    TankInfo[i][Inhalt] = INI_ReadInt(loader);
    format(loader,sizeof(loader),"Owned_%d",i);
    TankInfo[i][Owned] = INI_ReadInt(loader);
    format(loader,sizeof(loader),"Exists_%d",i);
    TankInfo[i][Exists] = INI_ReadInt(loader);
    Erstellte_Tanken++;
    }
    }
    INI_Close();
    }
    return 1;
    }

    Sie brauchen Hilfe bei Linux oder Windows Servern? Wissen nicht, wie man am besten ein Forum o. a. installiert? Dann schreiben Sie mir eine PN und ich versuche Ihnen zu helfen!

    Einmal editiert, zuletzt von Davkus ()

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Die tanken die du erstellt hast kannste löschen, du musst neue erstellen damit diese als erstellt markiert werden

    stock LoadTankInfo()
    {
    if(INI_Open("/Tanken/tanken.cfg"))
    {
    for(new i=0;i<MAX_T;i++)
    {
    new loader[128];
    format(loader,sizeof(loader),"Exists_%d",i);
    TankInfo[i][Exists] = INI_ReadInt(loader);
    if(TankInfo[i][Exists])
    {
    format(loader,sizeof(loader),"X_%d",i);
    TankInfo[i][X] = INI_ReadFloat(loader);
    format(loader,sizeof(loader),"Y_%d",i);
    TankInfo[i][Y] = INI_ReadFloat(loader);
    format(loader,sizeof(loader),"Z_%d",i);
    TankInfo[i][Z] = INI_ReadFloat(loader);
    format(loader,sizeof(loader),"Besitzer_%d",i);
    INI_ReadString(TankInfo[i][Besitzer],loader,MAX_PLAYER_NAME);
    format(loader,sizeof(loader),"Preis_%d",i);
    TankInfo[i][Preis] = INI_ReadInt(loader);
    format(loader,sizeof(loader),"Lpreis_%d",i);
    TankInfo[i][Lpreis] = INI_ReadInt(loader);
    format(loader,sizeof(loader),"Inhalt_%d",i);
    TankInfo[i][Inhalt] = INI_ReadInt(loader);
    format(loader,sizeof(loader),"Owned_%d",i);
    TankInfo[i][Owned] = INI_ReadInt(loader);
    Erstellte_Tanken++;
    }
    }
    INI_Close();
    }
    return 1;
    }


    Du musst vorher ,,exist´´ laden und dann abfragen

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • Ich habe ja in SaveTankInfo fremove("/Tanken/tanken.cfg");


    Also müssen die doch immer erneut gelöscht werden.


    Habe schon mehrmals getestet


    EDIT:Ich Probier deine Variante mal aus ;)

    Sie brauchen Hilfe bei Linux oder Windows Servern? Wissen nicht, wie man am besten ein Forum o. a. installiert? Dann schreiben Sie mir eine PN und ich versuche Ihnen zu helfen!

  • Also beim Speichern vorher die schon vorhandene Datei löschen und neu zusammenstellen lassen, ist so am sichersten,
    immer abfragen ob auch diese Tanke vom Admin/User erstellt wurde das heißt per extra key, keys die nicht exestieren geben
    Automatisch 0 zurück also exestiert sie nicht

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • So,das klappt nun schonmal alles.Nur noch eine Frage,irgendwie werden immer mehr Tankstellen gespeichert aber immer mit dem Wert 0.Why?


    Hier mein SaveTankInfo()stock SaveTankInfo()
    {
    fremove("/Tanken/tanken.cfg");
    INI_Create("/Tanken/tanken.cfg");
    if(INI_Open("/Tanken/tanken.cfg"))
    {
    new saver[128];
    for(new i=0;i<MAX_T;i++)
    {
    format(saver,sizeof(saver),"X_%d",i);
    INI_WriteFloat(saver,TankInfo[i][X]);
    format(saver,sizeof(saver),"Y_%d",i);
    INI_WriteFloat(saver,TankInfo[i][Y]);
    format(saver,sizeof(saver),"Z_%d",i);
    INI_WriteFloat(saver,TankInfo[i][Z]);
    format(saver,sizeof(saver),"Besitzer_%d",i);
    INI_WriteString(saver,TankInfo[i][Besitzer]);
    format(saver,sizeof(saver),"Preis_%d",i);
    INI_WriteInt(saver,TankInfo[i][Preis]);
    format(saver,sizeof(saver),"Lpreis_%d",i);
    INI_WriteInt(saver,TankInfo[i][Lpreis]);
    format(saver,sizeof(saver),"Inhalt_%d",i);
    INI_WriteInt(saver,TankInfo[i][Inhalt]);
    format(saver,sizeof(saver),"Owned_%d",i);
    INI_WriteInt(saver,TankInfo[i][Owned]);
    format(saver,sizeof(saver),"Exists_%d",i);
    INI_WriteInt(saver,TankInfo[i][Exists]);
    }
    INI_Save();
    INI_Close();
    }
    return 1;
    }

    Sie brauchen Hilfe bei Linux oder Windows Servern? Wissen nicht, wie man am besten ein Forum o. a. installiert? Dann schreiben Sie mir eine PN und ich versuche Ihnen zu helfen!

  • stock SaveTankInfo()
    {
    fremove("/Tanken/tanken.cfg");
    INI_Create("/Tanken/tanken.cfg");
    if(INI_Open("/Tanken/tanken.cfg"))
    {
    new saver[128];
    for(new i=0;i<MAX_T;i++)
    {
    if(TankInfo[i][Exists])
    {
    format(saver,sizeof(saver),"X_%d",i);
    INI_WriteFloat(saver,TankInfo[i][X]);
    format(saver,sizeof(saver),"Y_%d",i);
    INI_WriteFloat(saver,TankInfo[i][Y]);
    format(saver,sizeof(saver),"Z_%d",i);
    INI_WriteFloat(saver,TankInfo[i][Z]);
    format(saver,sizeof(saver),"Besitzer_%d",i);
    INI_WriteString(saver,TankInfo[i][Besitzer]);
    format(saver,sizeof(saver),"Preis_%d",i);
    INI_WriteInt(saver,TankInfo[i][Preis]);
    format(saver,sizeof(saver),"Lpreis_%d",i);
    INI_WriteInt(saver,TankInfo[i][Lpreis]);
    format(saver,sizeof(saver),"Inhalt_%d",i);
    INI_WriteInt(saver,TankInfo[i][Inhalt]);
    format(saver,sizeof(saver),"Owned_%d",i);
    INI_WriteInt(saver,TankInfo[i][Owned]);
    format(saver,sizeof(saver),"Exists_%d",i);
    INI_WriteInt(saver,TankInfo[i][Exists]);
    }
    }
    INI_Save();
    INI_Close();
    }
    return 1;
    }


    Du musst vorher abfragen ob sie exestieren

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • So nochmal zur Geltung, mein Fehler ist, das er den String nicht ausliest.


    Wieso kp. Hier der Code


    stock LoadHouseInfo()
    {
    if(INI_Open("/Houses/haus.cfg"))
    {

    new loader[128];
    for(new i=0;i<MAX_H;i++)
    {
    format(loader,sizeof(loader),"Exists_%d",i);
    HouseInfo[i][Exists] = INI_ReadInt(loader);
    if(HouseInfo[i][Exists])
    {
    format(loader,sizeof(loader),"Besitzer_%d",i);
    INI_ReadString(HouseInfo[i][Besitzer],loader);
    printf("Besitzer_%d : %s",i,HouseInfo[i][Besitzer]);
    format(loader,sizeof(loader),"EnterX_%d",i);
    HouseInfo[i][EnterX] = INI_ReadFloat(loader);
    format(loader,sizeof(loader),"EnterY_%d",i);
    HouseInfo[i][EnterY] = INI_ReadFloat(loader);
    format(loader,sizeof(loader),"EnterZ_%d",i);
    HouseInfo[i][EnterZ] = INI_ReadFloat(loader);
    format(loader,sizeof(loader),"ExitX_%d",i);
    HouseInfo[i][ExitX] = INI_ReadFloat(loader);
    format(loader,sizeof(loader),"ExitY_%d",i);
    HouseInfo[i][ExitY] = INI_ReadFloat(loader);
    format(loader,sizeof(loader),"ExitZ_%d",i);
    HouseInfo[i][ExitZ] = INI_ReadFloat(loader);
    format(loader,sizeof(loader),"Locked_%d",i);
    HouseInfo[i][Locked] = INI_ReadInt(loader);
    format(loader,sizeof(loader),"Preis_%d",i);
    HouseInfo[i][Preis] = INI_ReadInt(loader);
    format(loader,sizeof(loader),"Level_%d",i);
    HouseInfo[i][Level] = INI_ReadInt(loader);
    format(loader,sizeof(loader),"Interior_%d",i);
    HouseInfo[i][Interior] = INI_ReadInt(loader);
    format(loader,sizeof(loader),"VirtualWorld_%d",i);
    HouseInfo[i][VirtualWorld] = INI_ReadInt(loader);
    format(loader,sizeof(loader),"Owned_%d",i);
    HouseInfo[i][Owned] = INI_ReadInt(loader);
    format(loader,sizeof(loader),"PickupID_%d",i);
    HouseInfo[i][PickupID] = INI_ReadInt(loader);
    if(HouseInfo[i][Exists])
    {
    if(HouseInfo[i][Owned] == 0)
    {
    HouseInfo[i][PickupID] = CreateStreamPickup(1273, 1, HouseInfo[i][EnterX],HouseInfo[i][EnterY],HouseInfo[i][EnterZ],PICKUP_RANGE);
    CreateMapIcon(31,0,HouseInfo[i][EnterX],HouseInfo[i][EnterY],HouseInfo[i][EnterZ]);
    }
    else
    {
    HouseInfo[i][PickupID] = CreateStreamPickup(1239, 1, HouseInfo[i][EnterX],HouseInfo[i][EnterY],HouseInfo[i][EnterZ],PICKUP_RANGE);
    CreateMapIcon(32,0,HouseInfo[i][EnterX],HouseInfo[i][EnterY],HouseInfo[i][EnterZ]);
    }
    Created_Houses++;
    }
    }
    }
    INI_Close();
    }
    return 1;
    }



    Kommt einfach nichts raus in der Console, nur Besitzer_1:(NICHTS)


    Wo liegt der Fehler-.-?

  • Japp habe ich,


    es ist sogar ingame da alles geht bloß der String nicht-.-


    Hier der Beweis.


    Besitzer_1=Staat
    EnterX_1=1520.0300
    EnterY_1=-1703.5249
    EnterZ_1=13.5468
    ExitX_1=328.4939
    ExitY_1=1480.5899
    ExitZ_1=1084.4499
    Locked_1=0
    Preis_1=5000
    Level_1=1
    Interior_1=15
    VirtualWorld_1=5
    Exists_1=1
    Owned_1=0
    PickupID_1=0