Beiträge von Jeffry

    Leichter ist es mit dem Streamer Plugin, da musst du nicht ständig prüfen ob der Spieler noch in der Virtual World ist.
    http://forum.sa-mp.com/showthread.php?t=102865


    CreateDynamicObject(modelid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz, worldid = -1, interiorid = -1, playerid = -1, Float:streamdistance = 200.0, Float:drawdistance = 0.0);


    Beispiel:
    CreateDynamicObject(1337,123.45, 456.78, 11.11, 0.0, 0.0, 180.0, 5555); //VW = 5555

    Im Compiler sind zwei verschiedene Pfade angegeben, das scheint mir so als dass du den Code über einen Doppelklick auf die .pwn Datei öffnest.
    Öffne den Code mal, indem du auf deinen Server-Ordner gehst, dann /pawno/ und dann pawno.exe. Dann öffne auf dem richtigen Pfad die .pwn über File => Open.


    Achte auch darauf, dass du in /pawno/includes alle includes aktuell hast.

    public OnPlayerSpawn(playerid)
    {
    StopAudioStreamForPlayer(playerid);
    new Random = random(sizeof(RandomSpawns));
    SetPlayerPos(playerid, RandomSpawns[Random][0], RandomSpawns[Random][1], RandomSpawns[Random][2]);
    SetPlayerFacingAngle(playerid, RandomSpawns[Random][3]);


    if(IsPlayerNPC(playerid))
    {
    new npcname[64];
    GetPlayerName(playerid,npcname,64);
    if(!strcmp(npcname,"[Bot]Name",true))
    {
    //SetSpawnInfo(playerid, team, skin, Float:x, Float:y, Float:z, Float:rotation, weapon1, weapon1_ammo, weapon2, weapon2_ammo, weapon3, weapon3_ammo);
    SetSpawnInfo(playerid, 0, 107, 2492.5146, -1703.2296, 1015.5703, 328.5485, 0, 0, 0, 0, 0, 0);
    new Text3D:NameEintragen = Create3DTextLabel("Dieb",0xFFFFFFAA,30.0,40.0,50.0,40.0,0);
    Attach3DTextLabelToPlayer(NameEintragen, playerid, 0.0, 0.0, 0.5);
    SetPlayerColor(playerid,0x00FF00AA);
    }
    }
    return 1;
    }



    @.x22 Zieglein:

    Spoiler anzeigen
    Was soll denn das?

    printe mal "disAngleFormat" nachdem du es gesetzt hast. Und poste dann was im server_log steht.


    print(disAngleFormat);


    Und wie hast du es denn definiert?
    new disAngleFormat... ?

    Könntest du mir eventuell ein Beispielcode dalassen, denn ich kann mich mit deinem Formulierung nicht ganz Iden­ti­fi­zie­ren.



    ocmd:moneydrop(playerid)
    {
    new tmp_id = -1, string[144];
    if(PlayerInfo[playerid][pJob] != 22)return SendClientMessage(playerid, -1, "Du bist kein Geldlieferant.");
    if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER)return SendClientMessage(playerid, -1, "Du sitzt in keinem Fahrzeug.");
    new carid = GetPlayerVehicleID(playerid);
    if(!IsASecuricar(carid))return SendClientMessage(playerid, -1, "Du sitzt in keinem Geldtransporter.");
    for ( new i; i < sizeof(Lieferantveh); i++)
    {
    if(carid != Lieferantveh[i])continue;
    tmp_id = i;
    break;
    }
    if(tmp_id == -1)return SendClientMessage(playerid, -1, "Du sitzt in keinem Geldtransporter.");
    if(MoneyLoad[tmp_id] == 0)return SendClientMessage(playerid, -1, "Der Geldtransporter ist nicht beladen.");
    new atm = -1;
    for(new i;i<sizeof(aInfo);i++){
    if(!IsPlayerInRangeOfPoint(playerid, 3.0, aInfo[i][a_x], aInfo[i][a_y], aInfo[i][a_z]))continue;
    atm = i;
    break;
    }
    if(atm == -1)return SendClientMessage(playerid, -1, "Du bist nicht nahe einer ATM.");
    if(aInfo[atm][LoadValue] > 15000)return SendClientMessage(playerid, -1, "Der Automat hat bereits, $15.000");


    aInfo[atm][LoadValue] += 100;
    MoneyLoad[tmp_id] = 0;
    new rand = 300 + random(200);
    GivePlayerMoney(playerid, rand);
    format(string, sizeof(string), "ERFOLGREICH: {FFFFFF}Du hast den Geldtransporter erfolgreich entladen. Verdienst: $i", rand);
    SendClientMessage(playerid, COLOR_GREEN, string);
    return 1;
    }


    Das nennt sich das "EVA" Prinzip, nach dem solltest du wenn möglich vorgehen. Eingabe-Verarbeitung-Ausgabe

    dcmd_arrest(playerid,params[])
    {
    new pID, zelle
    if(sscanf(params,"ud",pID,zelle))return SendClientMessage(playerid,COLOR_RED,"Befehl: /arrest [playerid] [Zelle]");
    if(IsACop(playerid))
    {
    if(SInfo[pID][pWantedpunkte] > 0)
    {
    if(SInfo[pID][pKnast] == 0)
    {
    if(IsPlayerInRangeOfPoint(playerid,10.0,613.2817,-608.3835,17.2266) || IsPlayerInRangeOfPoint(playerid,15.0,198.0614,158.9322,1003.0234))
    {
    if (ProxDetectorS(8.0, playerid, pID))
    {
    GetPlayerName(playerid,pname,sizeof(pname));
    format(str,sizeof(str),"Du hast Spieler %s für %d Minuten eingesperrt!",pname,2*SInfo[pID][pWantedpunkte]);
    SendClientMessage(playerid,Blau,str);
    new sname[MAX_PLAYER_NAME];
    GetPlayerName(pID,sname,sizeof(sname));
    format(str,sizeof(str),"<< Officer %s hat %s für %d Minuten eingesperrt! >>",pname,sname,2*SInfo[pID][pWantedpunkte]);
    SendClientMessageToAll(Blau,str);


    SInfo[pID][pKnastzeit] = 2*SInfo[pID][pWantedpunkte];
    SInfo[pID][pKnast] = 1;
    SInfo[pID][pGefesselt] = 0;
    TogglePlayerControllable(pID,1);
    GivePlayerMoney(pID,-350*SInfo[pID][pWantedpunkte]);
    GivePlayerMoney(playerid,350*SInfo[pID][pWantedpunkte]);
    switch(zelle)
    {
    case 0: SetPlayerPos(pID,1459.2109,-1013.4951,26.8438); // knast Zelle
    case 1: SetPlayerPos(pID,...); // knast Zelle
    case 2: ...
    }


    SetPlayerSpecialAction(pID,SPECIAL_ACTION_NONE);
    SpawnPlayer(pID);
    SetPlayerInterior(pID,1);
    ResetPlayerWeapons(pID);


    SInfo[pID][pWantedpunkte] = 0;
    SetPlayerWantedLevel(playerid,0);
    SetPlayerWantedLevel(pID,SInfo[pID][pWantedpunkte]);
    SetPlayerColor(pID, 0xAAAAAA00);
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Der Spieler ist zuweit weg von dir!");
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Hier kannst du keinen einsperren!");
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Der Spieler ist schon im Gefängnis!");
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Dieser Spieler hat keine Wanteds!");
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Das darfst du nicht!");
    }
    return 1;
    }


    Ich hab es dir mal in den Code gemacht, ist eigentlich selbsterklärend.
    Wobei mir nicht ganz klar ist, warum du "SpawnPlayer(pID);" nach SetPlayerPos benutzt.

    Auf Anfrage in PM:


    So also?


    Nein.



    CMD:kennschild(playerid, params[])
    {
    new kszahlen,kslaenge,str[20],CarID,kspreis,pID;
    if(sInfo[playerid][pFraktion] == 1)return SendClientMessage(playerid,-1,"Du bist nicht im Ordnungsamt");
    {
    if(sscanf(params,"iiid",CarID,kspreis,kszahlen,pID)) return SendClientMessage(playerid,-1,"Verwende: /kennschild [CarID] [Preis] [KennschildName (max. 4Zahlen)] [playerID]");
    if(pID == playerid) return SendClientMessage(playerid,-1, "Hinweis: Du kannst Dir selber kein Kennschild geben");
    if(!IsPlayerInRangeOfPoint(playerid,5.0,919.3960,-1264.7429,15.1719))return SendClientMessage(playerid,-1,"Hinweis: Du bist nicht beim TÜV (Ordnungsamt Base)");
    if(kszahlen > 9999) return SendClientMessage(playerid,-1,"Hinweis: Maximal nur 4 Zahlen");
    if(kspreis > GetPlayerMoney(pID))return SendClientMessage(playerid,-1,"Hinweis: Soviel Geld hat der Spieler nicht!");
    if(kspreis > 100000 || kspreis < 1) return SendClientMessage(playerid,-1,"Hinweis: Maximal nur 100.000$");
    if(sCarInfo[CarID][pKey] != 1)
    {
    if(sCarInfo[CarID][CarSchild] == 0)
    {
    for(new i; i < MAX_VEHICLES; i++)
    {
    format(str,sizeof(str),"DSZ-%i",kszahlen);
    if(!strcmp(sCarInfo[i][CarSchildName],str)) return SendClientMessage(playerid,-1,"Hinweis: Das Kennzeichen gibt es schon!");
    }
    SetVehicleNumberPlate(CarID,str);
    GivePlayerMoney(sCarInfo[CarID][sName], -kspreis);
    }
    else
    {
    SendClientMessage(playerid,-1,"Hinweis: Das Auto besitzt schon ein Kennschild!");
    }
    }
    else
    {
    SendClientMessage(playerid,-1,"Hinweis: Du besitzt kein Auto auf dem ausgewähltem Autoschlüsel!");
    }
    }
    return 1;
    }

    Ich hab dir auch gleich noch ein halbes Dutzend anderer Fehler behoben.



    Wenn
    GivePlayerMoney(sCarInfo[CarID][sName], -kspreis);
    sName ein String ist, dann nutze:
    GivePlayerMoney(ReturnPlayerID(sCarInfo[CarID][sName]), -kspreis);
    http://forum.sa-mp.de/gta-mult…eschnipsel-53#post1833300

    1.
    Nach dem Loop
    if(strlen(signFormat) == 0) return SendClientMessage...


    2. Eine zweite Seite, die die weiteren Schilder anzeigt.
    Entweder über einen zweiten Befehl, oder über einen der Buttons.

    Dort wo er in den Modus geht:


    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    format(name, sizeof(name), "[NMR]%s");
    SetPlayerName(playerid, name);



    Dort wo er beendet:
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    strdel(name, 0, 5);
    SetPlayerName(playerid, name);

    stock ShowSigns(playerid)
    {
    new signFormat[800];
    new signLocation[30];
    for(new i=0;i<sizeof(SignInfo);i++)
    {
    printf("i: %d", i);
    if(SignInfo[i][ID] == 0)continue;
    if(SignInfo[i][ForSale] != 1) continue;
    printf("passed.");
    Get3DZoneForCoords(signLocation, sizeof(signLocation), SignInfo[i][x], SignInfo[i][y], SignInfo[i][z]);
    print(signLocation);
    format(signFormat,sizeof(signFormat),"%s{FFFFFF}ID: {FF9900}%i {FFFFFF}|| Location: {FF9900}%s {FFFFFF}|| Price: {FF9900}%s\n",signFormat,SignInfo[i][ID],signLocation,FM(SignInfo[i][Price]));
    print(signFormat);
    }
    ShowPlayerDialog(playerid,48,DIALOG_STYLE_LIST,"Available billboards",signFormat,"Select","Back");
    return 1;
    }
    Was steht im Log?


    lukas1177: Nicht dein Ernst, oder?
    Kaliber: Die Zeile an sich hat schon fast 100 Zeichen, wenn er also mehr als 10 Schilder hat, dann wird er sogar mehr als die 800 brauchen.

    public prison()


    zu:
    forward prison();
    public prison()



    Und bei den
    SetPlayerPos(pID,//koordinate vom AP);


    solltest du natürlich auch etwas eintragen, das versteht sich aber hoffentlich von selbst.

    OnGameModeInit:
    SetTimer("Prison",60000,true);//timer geht 60 min



    ocmd:rangeban(playerid,params[])
    {
    if(IstSpielerAdmin(playerid, 5))//anpassen
    {
    new pID, reason[128], string[128]; //die defines die wir später brauchen
    if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid, 0xAFAFAFAA, "Benutze: /prison [ID] [Grund]");
    format(string,sizeof(string),"[ADMCMD]: %s wurde von Admin %s ins Admin Prison geschickt Grund: %s", SpielerName(pID),SpielerName(playerid),reason);
    SendClientMessageToAll(0xFF4122FF,string);
    SetPlayerPos(pID,//koordinate vom AP);
    new pfad[64];
    format(pfad, sizeof(pfad), "/ordner/%s.ini", SpielerName(pID));
    dini_IntSet(pfad, "Prison", 1);
    }
    else
    {
    SendClientMessage(playerid,0xAFAFAFAA,"Du bist kein Admin!");
    }
    return 1;
    }


    public prison()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i)) continue;
    new pfad[64];
    format(pfad, sizeof(pfad), "/ordner/%s.ini", SpielerName(i));
    if(strval(dini_Get(pfad, "Prison")) == 1)
    {
    dini_IntSet(pfad, "Prisontime", strval(dini_Get(pfad, "Prisontime"))+1); //in die spieler datei wird jeweils jede minute +1 gemacht
    if(strval(dini_Get(pfad, "Prisontime"))==60) //ist dann der wert auf 60 kommt dies
    {
    SetPlayerPos(i,//koordinaten zum rauskommen);
    dini_IntSet(pfad, "Prisontime", 1);
    dini_IntSet(pfad, "Prison", 0);
    }
    }
    }
    return 1;
    }


    Es sollte klar sein, dass in scriptfiles der Ordner "ordner" existieren muss.