Beiträge von SqueezyZ

    ´´´´´´´´´´´´´´

    Ich habe noch ein Problem :/


    Undzwar möchte ich, dass wenn man /members eingibt man die Ränge der Spieler sieht :/


    ocmd:members(playerid,params[])
    {
    new fID,string[128];
    fID=GetPVarInt(playerid,"Fraktion");
    SCM(playerid,gruen,"------ Fraktions-Mitglieder Online------");
    new rangtext[50];
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(GetPVarInt(playerid,"Fraktion") == 1)
    switch(GetPVarInt(playerid,"Rang"))
    {
    case 1:{rangtext="Deputy";}
    case 2:{rangtext="Inspector";}
    case 3:{rangtext="Detective";}
    case 4:{rangtext="Lieutenant";}
    case 5:{rangtext="Captain";}
    case 6:{rangtext="Chief";}
    }
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i))
    {
    if(GetPVarInt(i,"Fraktion") == fID)
    {
    format(string,sizeof(string),"Name: %s | Rang: %s",SpielerName(i),rangtext(i));
    SCM(playerid,COLOR_YELLOW,string);
    }
    }
    }
    SCM(playerid,gruen,"--------------------------------------------");
    return 1;
    }


    Wenn ich jedoch /members eingebe, dann wird (auch wenn ich Rank 6 bin) mein Rankname duch den des anderen Spielers ersetzt...


    Wie mache ich das, dass mein Rang und der Rang des anderen Spielers angezeigt werden?

    Hey Leute,


    wenn ich jemand Gesuchten Clearen will, steht dort, dass der Spieler nicht gesucht wird...
    Anscheinend funktioniert das mit der pID nicht ganz :(



    Der Befehl:


    ocmd:aclear(playerid,params[])
    {
    new pID;
    if(isPlayerAnAdmin(playerid,2))
    {
    if(GetPVarInt(pID,"Wanted") > 0)
    {
    new string[128],sendername[MAX_PLAYER_NAME],name32[MAX_PLAYER_NAME];
    GetPlayerName(playerid, sendername, sizeof(sendername));
    if(sscanf(params,"u",pID))return SCM(playerid,COLOR_FADE3,"/aclear [spieler]");
    GetPlayerName(pID,name32,sizeof(name32));
    format(string, sizeof(string), "Du hast die Strafakte von %s gelöscht!",name32);
    SCM(playerid,ROT, string);
    format(string, sizeof(string), "Admin %s hat deine Wanteds gelöscht!",sendername);
    SCM(pID,ROT, string);
    format(string,sizeof(string),"HQ: %s hat die Strafakte von %s gelöscht.",sendername,name32);
    StaatCast(string);
    SetPVarInt(pID,"Wanted",0);
    TextDrawHideForPlayer(pID,wanteddraw[pID]);
    TextDrawHideForPlayer(pID,wantedstern);
    return 1;
    }
    SCM(playerid,ROT,"Dieser Spieler wird nicht gesucht!");
    return 1;
    }
    SCM(playerid,RED,"Dir fehlen die benötigten Rechte!");
    return 1;
    }

    Ich habe ein Problem mit diesem Dialog:


    if(dialogid == DIALOG_SMAT)
    {
    if(response == 0)
    {
    SCM(playerid,ROT,"Abgebrochen");
    return 1;
    }
    if(response == 1)
    {
    new anzahl = strval(inputtext);
    if(anzahl >= 1 && anzahl <= 100)
    {
    new geld = GetPVarInt(playerid,"Geld");
    new kosten = 100 * anzahl;
    if(geld >= anzahl)
    {
    GiveMoney(playerid,-kosten);
    SetPVarInt(playerid,"Mats", GetPVarInt(playerid,"Mats")+anzahl);
    SCMF(playerid,COLOR_YELLOW,"Du hast dir %s Mats für %s$ gekauft!",anzahl,kosten);
    return 1;
    }
    SCM(playerid,ROT,"Du hast nicht genügend Bargeld dabei!");
    return 1;
    }
    SCM(playerid,ROT,"Der Wert muss zwischen 1 und 100 Mats liegen");
    return 1;
    }
    }


    Wenn ich den Dialog nun mit einer Zahl bestätige bekomme ich zwar das
    Geld noch abgezogen, direkt danach crasht aber der Server! :o



    Wisst ihr mehr? :o

    Hey Leute,


    ich habe einen neuen BSN eingefügt (by Eddy) und wenn ich auf dem Server connecte und mich in der Nähe befinde, laden die Objekte nicht richtig:





    Die Map habe ich euch unten verlinkt, damit ihr seht wie genau die Objekte erstellt werden !



    Die Map (pastebin):


    BSN

    Hey Leute,


    ich habe mich noch nie wirklich mit einem Inputtext befasst und möchte einen "Unterschriftsdialog" machen, wo der Spieler als Inputtext seinen Spielernamen eingeben muss.


    Ich habe es bis jetzt so gemacht, aber leider funktioniert es nicht:


    if(dialogid == DIALOG_UNTERSCHRIFT)
    {
    new pID[64];
    GetPlayerName(playerid,pID,sizeof(pID));
    new text = strval(inputtext);
    if(text == pID)
    {
    SetPVarInt(playerid,"Perso",1);
    SCM(playerid, COLOR_YELLOW, "Herzlichen Glückwunsch, du kannst deinen Perso immer unter /stats betrachten.");
    SCM(playerid, COLOR_YELLOW, "Bearbeitungsgebühr: 2.000$");
    GiveMoney(playerid,-2000);
    return 1;
    }
    else
    {
    SCM(playerid,COLOR_RED,"Du musst deinen InGame-Namen schreiben!");
    return 1;
    }
    }


    Ihr habt doch bestimmt Ideen ;)

    SCMF:


    stock SCMF(playerid, color, fstring[], {Float, _}:...)
    {
    static const STATIC_ARGS = 3;
    new n = (numargs() - STATIC_ARGS) * BYTES_PER_CELL;
    if(n)
    {
    new message[144],arg_start,arg_end;
    #emit CONST.alt fstring
    #emit LCTRL 5
    #emit ADD
    #emit STOR.S.pri arg_start


    #emit LOAD.S.alt n
    #emit ADD
    #emit STOR.S.pri arg_end
    do
    {
    #emit LOAD.I
    #emit PUSH.pri
    arg_end -= BYTES_PER_CELL;
    #emit LOAD.S.pri arg_end
    }
    while(arg_end > arg_start);


    #emit PUSH.S fstring
    #emit PUSH.C 144
    #emit PUSH.ADR message


    n += BYTES_PER_CELL * 3;
    #emit PUSH.S n
    #emit SYSREQ.C format


    n += BYTES_PER_CELL;
    #emit LCTRL 4
    #emit LOAD.S.alt n
    #emit ADD
    #emit SCTRL 4


    if(playerid == INVALID_PLAYER_ID)
    {
    #pragma unused playerid
    return SendClientMessageToAll(color, message);
    } else {
    return SCM(playerid, color, message);
    }
    } else {
    if(playerid == INVALID_PLAYER_ID)
    {
    #pragma unused playerid
    return SendClientMessageToAll(color, fstring);
    } else {
    return SCM(playerid, color, fstring);
    }
    }
    }


    SCMF = SendClientMessage + String


    Beispiel:


    SCMF(playerid,ROT,"%s hat dich gebannt",SpielerName[playerid]


    Das ist quasi eine verkürzung der format-Geschichte und macht das ganze viel leichter :)

    Hey Leute,


    ich habe ein Problem mit diesem Stock, der die Tank-Preise in meinem Script festlegt bzw. lädt:
    Beim compilen bekomme ich keine Fehler, jedoch stürzt der Server beim starten ab und spuckt folgende Fehlermeldungen aus:


    Code
    [16:16:43] [MySQL] Connected (0) to 'test'@'127.0.0.1 via TCP/IP'.
    [16:16:43] [MySQL] Server Version 5.6.20.
    [16:16:44] [debug] Server crashed while executing inventar.amx
    [16:16:44] [debug] AMX backtrace:
    [16:16:44] [debug] #0 native format () from samp-server.exe
    [16:16:44] [debug] #1 0000a7b8 in SCMF (playerid=65535, color=-65281, fstring[]=@00c41348 "Diesel: %i$ | Benzin: %i$", ... <2 arguments>) at D:\Domi\Spiele\GTA San Andreas\Selfmade\gamemodes\inventar.pwn:137
    [16:16:44] [debug] #2 00101f54 in RandomTankpreis () at D:\Domi\Spiele\GTA San Andreas\Selfmade\gamemodes\inventar.pwn:21145
    [16:16:44] [debug] #3 0000b9d0 in public OnGameModeInit () at D:\Domi\Spiele\GTA San Andreas\Selfmade\gamemodes\inventar.pwn:1381
    [16:16:44] [debug] Native backtrace:
    [16:16:44] [debug] #0 0046c9e6 in ?? () from samp-server.exe



    OnGameModeInit:


    RandomTankpreis();
    SetTimer("ipsync",3600000,1);



    Der Stock:


    stock RandomTankpreis()
    {
    TankInfo[Diesel] = 5+random(6);
    TankInfo[Benzin] = 10+random(6);
    TankInfo[SuperPlus] = 15+random(6);
    TankInfo[Kerosin] = 15+random(16);
    SCMTA(gelb,"|>----Tankstellen-Infos----<|");
    SCMF(0xFFFF,gelb,"Diesel: %i$ | Benzin: %i$",TankInfo[Diesel],TankInfo[Benzin]);
    SCMF(0xFFFF,gelb,"Super+: %i$ | Kerosin: %i$",TankInfo[SuperPlus],TankInfo[Kerosin]);
    return 1;
    }


    Einbau im Timer ipsync:


    forward ipsync();
    public ipsync()
    {
    RandomTankpreis();
    RespawnAHCars(-1);
    return 1;
    }


    Sobald ich bei OnGameModeInit "RandomTankpreis" auskommentiere funktioniert alles :/



    Was ist da los?! ?(

    Zitat

    Schick uns mal von jeder Zeile mehr Code, sprich: 3 - 4 Zeilen drunter & drüber.



    Zeilenblock 137:


    }
    stock SCMF(playerid, color, fstring[], {Float, _}:...)
    {
    static const STATIC_ARGS = 3;
    new n = (numargs() - STATIC_ARGS) * BYTES_PER_CELL;
    if(n)
    {
    new message[144],arg_start,arg_end;
    #emit CONST.alt fstring
    #emit LCTRL 5
    #emit ADD
    #emit STOR.S.pri arg_start


    #emit LOAD.S.alt n
    #emit ADD
    #emit STOR.S.pri arg_end
    do
    {
    #emit LOAD.I
    #emit PUSH.pri
    arg_end -= BYTES_PER_CELL;
    #emit LOAD.S.pri arg_end
    }
    while(arg_end > arg_start);


    #emit PUSH.S fstring
    #emit PUSH.C 144
    #emit PUSH.ADR message


    n += BYTES_PER_CELL * 3;
    #emit PUSH.S n
    #emit SYSREQ.C format


    n += BYTES_PER_CELL; // Fehler
    #emit LCTRL 4
    #emit LOAD.S.alt n
    #emit ADD
    #emit SCTRL 4


    if(playerid == INVALID_PLAYER_ID)
    {
    #pragma unused playerid
    return SendClientMessageToAll(color, message);
    } else {
    return SCM(playerid, color, message);
    }
    } else {
    if(playerid == INVALID_PLAYER_ID)
    {
    #pragma unused playerid
    return SendClientMessageToAll(color, fstring);
    } else {
    return SCM(playerid, color, fstring);
    }
    }
    }



    Zeilenblick 21114:


    if(GetPVarInt(playerid,"Geld") >= TankPreis)
    {
    new gasvar = GetGasMax[GetVehicleModel(vehicle) - 400][0];
    FahrzeugInfo[i][fz_Tank] = gasvar;
    s_TogglePlayerControllable(playerid, 1);
    GiveMoney(playerid, - TankPreis);
    BizAbrechnen(slot);
    format(string,sizeof(string),"Du hast für %d$ vollgetankt!", TankPreis);
    SCM(playerid, COLOR_YELLOW, string);
    new str[16];
    format(str, sizeof(str), "Tank: %dL", gasvar);
    TextDrawSetString(TachoTank[playerid], str);
    return 1;
    }


    Zeilenblokc 1380:


    LoadBank();
    LoadZig();
    RandomTankpreis();
    ManualVehicleEngineAndLights(); // Fehler
    CreateDynamicPickup(1559,1,285.4450,-40.8059,1001.5156);


    Also alles irgendwie mit dem Tankpreis :/
    Bei Zeile 1380 ist die Zeile unter dem Tankpreis falsch, da das Script wahrscheinlich irgendwa mit "Tankpreis" hat :/



    P.S: Habe beim ersellen ausversehen falsche Zeilen geposter, diese hier sind jetzt aber richtig!! ^^