.:: /ainvite verändern | Problem mit Bsn | Problem mit /pay | /su verändern::.

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
  • Hallo
    Ich möchte das wenn ich /ainvite [Playerid] [Fraktion] eingebe,
    das dann eine Meldung kommt das du in die Fraktion LSPD eingeladen
    hast oder Medic oder anderen. Denn bei mir steht nur %s hat %s in die Fraktion %i eingeladen,
    also da steht dann nur die Zahl. Ich denke ich muss es Definieren.
    #define LSPD 1
    usw.


    Hier mein Befehl.

    ocmd:ainvite(playerid,params[])
    {
    new pID,frakid,string[128];
    if(sscanf(params,"ui",pID,frakid)) return SendClientMessage(playerid,grau,"Benutze: /ainvite [playerid] [Fraktion]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,grau,"Spieler ist nicht Online");
    if(GetPVarInt(playerid,"Adminlevel") >= 9)
    {
    SetPVarInt(pID,"Fraktion",frakid);
    format(string,128,"(AdmCmd) Admin %s hat %s in die Fraktion %i invited",SpielerName(playerid),SpielerName(pID),frakid);
    SendClientMessageToAll(0x00CDFFFF,string);
    SpielerSpeichern(playerid);
    SpielerSpeichern(pID);
    SpawnPlayer(pID);
    }
    else
    {
    SendClientMessage(playerid,weiss,"Du bist kein Admin 9/10");
    }
    return 1;
    }


    Bitte mal sagen ob das so richtig ist, denn ich möchte das bei mir steht.
    (AdmCmd) Admin %s hat %s in die Fraktion %i (LSPD) invited
    oder anderen einfach.



    Problem mit Bsn
    Mein Bsn ist verscwunden, obwohl ich kein
    Remove Objekt mehr habe, wisst ihr woran das liegt ?
    Das ist irgendwie komisch.
    Hier ein Bild: http://s1.directupload.net/file/d/3219/872xsyrl_png.htm
    Was kann man da machen ?




    Problem mit /pay

    Hallo ich habe ein Fehler in meinen Pay system.
    Undzwar, wenn ich den Befehl ausführ, dann
    gibt er das Geld an einen Spieler, undzwar soviel wie ich ihn gegeben habe.
    Aber das Geld was ich ihn gegeben habe wird bei mir nicht abgezogen.
    Und das Geld soll ja auch bei mir abgezogen werden.
    Aber ich gebe das Geld nur an den Spieler.


    Hier der Befehl.
    ocmd:pay(playerid,params[])
    {
    new pid,Geld;
    if(!sscanf(params,"ud",pid,Geld))
    {
    if(IsPlayerConnected(pid))
    {
    if(pid != playerid)
    {
    new Float:pPos[3];
    GetPlayerPos(pid,pPos[0],pPos[1],pPos[2]);
    if(!IsPlayerInRangeOfPoint(playerid,10.0,pPos[0],pPos[1],pPos[2]))return SendClientMessage(playerid,grau,"Der Spieler ist nicht in deiner Nähe.");
    if(GetPlayerMoney(playerid) < Geld)
    return SendClientMessage(playerid,grau,"Du hast nicht genug Geld.");
    GivePlayerMoney(playerid,-Geld);
    PlayerPlaySound(playerid,1052,0,0,0);
    GivePlayerMoney(pid,Geld);
    PlayerPlaySound(pid,1052,0,0,0);
    new Text[256];
    format(Text,sizeof(Text),"Du hast %s $%d gegeben.",SpielerName(pid),Geld);
    SendClientMessage(playerid,gelb,Text);
    format(Text,sizeof(Text),"Du hast $%d von %s bekommen.",Geld,SpielerName(playerid));
    SendClientMessage(pid,orange,Text);
    format(Text,sizeof(Text),"* %s nimmt Geld aus seiner Tasche und gibt es %s.",SpielerName(playerid),SpielerName(pid));
    SendClientMessageToAll(weiss,Text);
    GivePlayerMoney(playerid,Geld);
    GivePlayerMoney(pid,Geld);
    }
    else
    {
    SendClientMessage(playerid,rot,"wtf ? Warum willst du dir das Geld das du hast,");
    SendClientMessage(playerid,rot,"dir selber geben xD xD unötig");
    }
    }
    else
    {
    SendClientMessage(playerid,grau,"Der gewählte Spieler ist nicht Online.");
    }
    }
    else
    {
    SendClientMessage(playerid,grau,"/Pay [Playerid/Name] [Betrag]");
    }
    return true;
    }



    /su Befehl problem
    ICh habe ein paar Fehler in meinen Wantedsystem
    Egal wieviel Wanteds ich mir gebe, es wird 2Mal auf 69 WPS gesetzt.
    Ich habe mir mal 5 Wps gegeben dann bekam ich 2 mal 69 Wanteds.
    Ich soll auch bis 69 bekommen, das ist richtig, aber nicht höher.
    Hier der Befehl.


    Befehl
    ocmd:susi(playerid,params[])
    {
    new pID,wps,grund;
    if(Dienst[playerid] == 0)return SendClientMessage(playerid,weiss,"Nicht im Dienst.");
    if(!sscanf(params,"uis[64]",pID,wps,grund))return SendClientMessage(playerid,weiss,"INFO: /su [playerid] [wps] [Grund]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,weiss,"Spieler wurde nicht gefunden.");
    if(wps<1)return SendClientMessage(playerid,weiss,"Ungültiger Betrag.");
    if(GetPlayerScore(pID)<3)return SendClientMessage(playerid,weiss,"Der Spieler hat noch nicht Level 3 erreicht.");
    if(SpielerInfo[pID][Wanteds]+wps>69)
    {
    wps=69-SpielerInfo[pID][Wanteds];
    }
    new string[128],str[128];
    SpielerInfo[pID][Wanteds]+=wps;
    PlayCrimeReportForPlayer(playerid,pID,22);
    format(string,sizeof(string),"Wantedpunkte: %i Gesamt: %i Reporter: %s Grund: %s",wps,SpielerInfo[pID][Wanteds],SpielerName(playerid),grund);
    SendClientMessage(pID,0xFF0000AA,string);
    format(str,sizeof(str),"<<Gesuchter: %s Wantedpunkte: %i Gesamt: %i Reporter: %s Grund: %s>>",SpielerName(pID),wps,SpielerInfo[pID][Wanteds],SpielerName(playerid),grund);
    for (new i = 0; i<MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i))continue;
    if(!IsPlayerInFrak(i,1)&&!IsPlayerInFrak(i,5))continue;
    SendClientMessage(i,0xFF0000AA,string);
    }
    return 1;
    }
    Ich bitte um Hilfe.
    Bei allen Sachen.



  • ocmd:pay(playerid,params[])
    {
    new pid,Geld;
    if(sscanf(params,"ud",pid,Geld))
    {
    if(IsPlayerConnected(pid))
    {
    if(pid != playerid)
    {
    new Float:pPos[3];
    GetPlayerPos(pid,pPos[0],pPos[1],pPos[2]);
    if(!IsPlayerInRangeOfPoint(playerid,10.0,pPos[0],pPos[1],pPos[2]))return SendClientMessage(playerid,grau,"Der Spieler ist nicht in deiner Nähe.");
    if(GetPlayerMoney(playerid) < Geld)
    return SendClientMessage(playerid,grau,"Du hast nicht genug Geld.");
    GivePlayerMoney(playerid,-Geld);
    PlayerPlaySound(playerid,1052,0,0,0);
    GivePlayerMoney(pid,Geld);
    PlayerPlaySound(pid,1052,0,0,0);
    new Text[256];
    format(Text,sizeof(Text),"Du hast %s $%d gegeben.",SpielerName(pid),Geld);
    SendClientMessage(playerid,gelb,Text);
    format(Text,sizeof(Text),"Du hast $%d von %s bekommen.",Geld,SpielerName(playerid));
    SendClientMessage(pid,orange,Text);
    format(Text,sizeof(Text),"* %s nimmt Geld aus seiner Tasche und gibt es %s.",SpielerName(playerid),SpielerName(pid));
    SendClientMessageToAll(weiss,Text);
    GivePlayerMoney(playerid,-Geld);
    GivePlayerMoney(pid,Geld);
    }
    else
    {
    SendClientMessage(playerid,rot,"wtf ? Warum willst du dir das Geld das du hast,");
    SendClientMessage(playerid,rot,"dir selber geben xD xD unötig");
    }
    }
    else
    {
    SendClientMessage(playerid,grau,"Der gewählte Spieler ist nicht Online.");
    }
    }
    else
    {
    SendClientMessage(playerid,grau,"/Pay [Playerid/Name] [Betrag]");
    }
    return true;
    }


    Das ist ja logisch, du gibst dem Spieler das Geld und dem, der den Spieler das Geld gibt auch. Du musst "GivePlayerMoney(playerid,-betrag); machen! Der Command oben ist schon korrigiert, kannst ihn nun einfügen!

    ocmd:susi(playerid,params[])
    {
    new pID,wps,grund[256];
    if(Dienst[playerid] == 0)return SendClientMessage(playerid,weiss,"Nicht im Dienst.");
    if(sscanf(params,"uds",pID,wps,grund))return SendClientMessage(playerid,weiss,"INFO: /su [playerid] [wps] [Grund]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,weiss,"Spieler wurde nicht gefunden.");
    if(wps<1)return SendClientMessage(playerid,weiss,"Ungültiger Betrag.");
    if(GetPlayerScore(pID)<3)return SendClientMessage(playerid,weiss,"Der Spieler hat noch nicht Level 3 erreicht.");


    new string[128],str[128];
    SpielerInfo[pID][Wanteds]+=wps;
    PlayCrimeReportForPlayer(playerid,pID,22);
    format(string,sizeof(string),"Wantedpunkte: %d Gesamt: %d Reporter: %s Grund: %s",wps,SpielerInfo[pID][Wanteds],SpielerName(playerid),grund);
    SendClientMessage(pID,0xFF0000AA,string);
    format(str,sizeof(str),"<<Gesuchter: %s Wantedpunkte: %d Gesamt: %d Reporter: %s Grund: %s>>",SpielerName(pID),wps,SpielerInfo[pID][Wanteds],SpielerName(playerid),grund);
    for (new i = 0; i<MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i))continue;
    if(!IsPlayerInFrak(i,1)||(!IsPlayerInFrak(i,5)))continue;
    SendClientMessage(i,0xFF0000AA,string);
    }
    return 1;
    }


    Müsste so klappen!

  • achso, man soll nicht über 69 Wanteds geben können?


    Dann so:


    ocmd:susi(playerid,params[])
    {
    new pID,wps,grund[256];
    if(Dienst[playerid] == 0)return SendClientMessage(playerid,weiss,"Nicht im Dienst.");
    if(sscanf(params,"uds",pID,wps,grund))return SendClientMessage(playerid,weiss,"INFO: /su [playerid] [wps] [Grund]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,weiss,"Spieler wurde nicht gefunden.");
    if(wps<1)return SendClientMessage(playerid,weiss,"Ungültiger Betrag.");
    if(wps>69)return SendClientMessage(playerid,weiss,"Ungültiger Betrag."); // Änder es so ab, wie du es willst
    if(GetPlayerScore(pID)<3)return SendClientMessage(playerid,weiss,"Der Spieler hat noch nicht Level 3 erreicht.");


    new string[128],str[128];
    SpielerInfo[pID][Wanteds]+=wps;
    PlayCrimeReportForPlayer(playerid,pID,22);
    format(string,sizeof(string),"Wantedpunkte: %d Gesamt: %d Reporter: %s Grund: %s",wps,SpielerInfo[pID][Wanteds],SpielerName(playerid),grund);
    SendClientMessage(pID,0xFF0000AA,string);
    format(str,sizeof(str),"<<Gesuchter: %s Wantedpunkte: %d Gesamt: %d Reporter: %s Grund: %s>>",SpielerName(pID),wps,SpielerInfo[pID][Wanteds],SpielerName(playerid),grund);
    for (new i = 0; i<MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i))continue;
    if(!IsPlayerInFrak(i,1)||(!IsPlayerInFrak(i,5)))continue;
    SendClientMessage(i,0xFF0000AA,string);
    }
    return 1;
    }

  • ocmd:susi(playerid,params[])
    {
    new pID,wps,grund[256];
    if(Dienst[playerid] == 0)return SendClientMessage(playerid,weiss,"Nicht im Dienst.");
    if(sscanf(params,"uds",pID,wps,grund))return SendClientMessage(playerid,weiss,"INFO: /su [playerid] [wps] [Grund]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,weiss,"Spieler wurde nicht gefunden.");
    if(wps<1)return SendClientMessage(playerid,weiss,"Ungültiger Betrag.");
    if(wps>69)return SendClientMessage(playerid,weiss,"Ungültiger Betrag."); // Änder es so ab, wie du es willst
    if(SpielerInfo[pID][Wanteds] >69)
    {
    SendClientMessage(playerid,weiss,"Dieser Spieler hat schon 69 Wanteds."); // Änder es ab, wie du willst
    }
    if(GetPlayerScore(pID)<3)return SendClientMessage(playerid,weiss,"Der Spieler hat noch nicht Level 3 erreicht.");


    new string[128],str[128];
    SpielerInfo[pID][Wanteds]+=wps;
    PlayCrimeReportForPlayer(playerid,pID,22);
    format(string,sizeof(string),"Wantedpunkte: %d Gesamt: %d Reporter: %s Grund: %s",wps,SpielerInfo[pID][Wanteds],SpielerName(playerid),grund);
    SendClientMessage(pID,0xFF0000AA,string);
    format(str,sizeof(str),"<<Gesuchter: %s Wantedpunkte: %d Gesamt: %d Reporter: %s Grund: %s>>",SpielerName(pID),wps,SpielerInfo[pID][Wanteds],SpielerName(playerid),grund);
    for (new i = 0; i<MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i))continue;
    if(!IsPlayerInFrak(i,1)||(!IsPlayerInFrak(i,5)))continue;
    SendClientMessage(i,0xFF0000AA,string);
    }
    return 1;
    }


    So müsste es klappen

  • Bei den Wanted system gehen die Wanteds immernoch über 69, wenn man jetzt zum Beispiel 65 Wanteds hat, und dann 5 Wanteds gibt,
    dann hat man 70, und wenn man dann nochmal 5 gibt hat man 75 Wanteds, ich möchte aber das es nur bis 69 geht und dann Ende.
    Wenn ich 65 Wanteds habe, und dann 5 gebe soll er bei 69 stehen bleiben, und nicht drüber gehen. Noch ein Beispiel.
    Wenn ich 69 Wanteds habe, und dann 10 gebe, dann soll er bei 69 trotzdem stehen bleiben.
    Egal wie viele Wanteds ich dann noch gebe, er soll dann bei 96 stehen bleiben.