Beiträge von Key


    COMMAND:addfraktionscar(playerid,params[])
    {
    new fid,vid,mid,color1,color2, Float:x,Float:y,Float:z,Float:a;
    GetPlayerPos(playerid,x,y,z);
    GetPlayerFacingAngle(playerid,a);
    if(sscanf(params,"dddd",fid,mid,color1,color2)) return SendClientMessage(playerid,-1,"Benutze: /addfraktionscar [Fraktionsid] [Model] [Farbe1] [Farbe2]");
    vid = CreateVehicle(mid,x,y,z,a,color1,color2,-1);
    new query[256];
    format(query, sizeof(query), "INSERT INTO FracVehicles (ID, ModelID, PosX, PosY, PosZ, PosA, Color1, Color2, FracID) VALUES ('%d', '%d', '%f', '%f', '%f', '%f', '%d', '%d', '%d')",
    vid, mid, x, y, z, a, color1, color2, fid);
    mysql_tquery(handle, query);
    DestroyVehicle(vid);
    LoadFracVehicles();
    SendClientMessage(playerid,-1,"Du hast ein Fraktionsauto erstellt!");
    return 1;
    }


    COMMAND:addfraktionscar(playerid,params[])
    {
    new fid,vid,mid,color1,color2, Float:x,Float:y,Float:z,Float:a;
    fid = SpielerInfo[playerid][pMember]; //Das musst du ggf. anpassen
    GetPlayerPos(playerid,x,y,z);
    GetPlayerFacingAngle(playerid,a);
    if(sscanf(params,"ddd",mid,color1,color2)) return SendClientMessage(playerid,-1,"Benutze: /addfraktionscar [Model] [Farbe1] [Farbe2]");
    vid = CreateVehicle(mid,x,y,z,a,color1,color2,-1);
    new query[256];
    format(query, sizeof(query), "INSERT INTO FracVehicles (ID, ModelID, PosX, PosY, PosZ, PosA, Color1, Color2, FracID) VALUES ('%d', '%d', '%f', '%f', '%f', '%f', '%d', '%d', '%d')",
    vid, mid, x, y, z, a, color1, color2, fid);
    mysql_tquery(handle, query);
    DestroyVehicle(vid);
    LoadFracVehicles();
    SendClientMessage(playerid,-1,"Du hast ein Fraktionsauto erstellt!");
    return 1;
    }


    Hab das jetzt nicht getestet, kann gut sein, dass du irgendwelche Fehler drin sind.

    Du erstellst 'ne Tabelle in deiner MySQL Datanbank, z.B. so:


    Name der Tabelle: lspd_cars
    [table='9']
    [*]vID[*]ModelID[*]Color1[*]Color2[*]x[*]y[*]z[*]a[*]health[*]
    [/table]


    Dann erstellst du z.B. ein "normales" Autohaus, wo aber nur Leader einkaufen können und speicherst die Daten des gekauften Autos in Variablen:



    enum frakcarData
    {
    vID,
    ModelID,
    //und so weiter..
    };


    new frakcarInfo[MAX_VEHS][fakcarData];


    new vid = CreateVehicle(/*Daten des gekauften Fahrzeugs*/);
    frakcarInfo[vid][vID] = vid;
    frakcarInfo[vid][ModelID] = GetVehicleModel(vid);
    //und so weiter..


    Dann überträgst du die Daten noch in die Datenbank.


    SQL
    INSERT TO 'lspd_cars' (`vID`,..) VALUES (%d..),vid);


    Bei OnGameModeExit oder wo auch immer du magst, speicherst du die aktuellen Daten dann



    stock saveFrakcars()
    {
    new query[256];
    for(new vid = 0; vid<MAX_VEHS;vid++)
    {
    format(query,sizeof(query), "UPDATE `lspd_cars` SET `vID` = %d /*...*/ WHERE `vID` = %d",i,i);
    mysql_query(query);
    }
    }


    Und als letztes das Ganze noch laden bei OnGameModeInit



    stock loadFrakcars()
    {
    format(new vid = 0; vid < MAX_VEHS; vid++)
    {
    new query[256];
    format(query, sizeof(query), "SELECT * FROM `lspd_cars` WHERE `vID`=%d LIMIT 1", i);
    mysql_query(query);
    mysql_store_result();
    mysql_fetch_row(query);
    sscanf(query, "ddddfffff>", frakcarInfo[i]);
    mysql_free_result();
    }
    }


    Fang mal an etwas zu scripten und wenn du Fragen hast, helf ich dir gerne weiter.

    Bin echt ein bisschen überfragt, sehe keinen Grund weshalb es nicht funktionieren sollte.
    Vielleicht hängt es mit LoadPlayer zusammen? Dass er in die Levelpunkte-Variable immer den Wert aus der Datenbank schreibt, welcher auf 0 ist? Wo benutzt du denn LoadPlayer?

    Ich hab den Code mal bei mir unter OnGameModeInit eingefügt, und es funktioniert anscheinend alles wunderbar.



    public OnGameModeInit()
    {
    SpielerInfo[0][pLevelpunkte] = 15;
    SpielerInfo[0][pLevel] = 1;
    SendClientMessage(0,-1,"|____________Zahltag___________|");
    GivePlayerMoney(0,2000);
    SendClientMessage(0,-1,"Du hast 45 Minuten gespielt und bekommst nun dein Gehalt!");
    SpielerInfo[0][pLevelpunkte] += 1;
    SpielerInfo[0][pPayday] = 0;
    printf("playerid: %d | pLevelPunkte: %d | Required: %d | Level: %d", 0, SpielerInfo[0][pLevelpunkte], RequiredPoints(0),SpielerInfo[0][pLevel]);
    if(SpielerInfo[0][pLevelpunkte] == RequiredPoints(0))//Hier
    {
    printf("Level hoch");
    GivePlayerScore(0,1);
    SpielerInfo[0][pLevelpunkte] = 0;
    SpielerInfo[0][pLevel] ++;
    printf("playerid: %d | pLevelPunkte: %d | Required: %d | Level: %d", 0, SpielerInfo[0][pLevelpunkte], RequiredPoints(0),SpielerInfo[0][pLevel]);
    SendClientMessage(0,-1,"Herzlichen Glückwunsch, du bist ein Level gestiegen!");
    }
    return 1;
    }


    Und geprintet wird:


    Code
    playerid: 0 | pLevelPunkte: 16 | Required: 16 | Level: 1
    Level hoch
    playerid: 0 | pLevelPunkte: 0 | Required: 20 | Level: 2


    Der Fehler muss also irgendwo anders liegen, schau mal an den Stellen, wo du SpielerInfo[playerid][pLevelpunkte] und SpielerInfo[playerid][pLevel] noch benutzt.


    stock SetPlayerFacingAngleToPlayer(playerid, targetid)
    {
    new Float:p[3], Float:t[3];
    GetPlayerPos(playerid, p[0], p[1], p[2]);
    GetPlayerPos(targetid, t[0], t[1], t[2]);
    new Float:a = 180.0-atan2(p[0]-t[0], p[1]-t[1]);
    SetPlayerFacingAngle(playerid, a);
    }


    Du hast das Float: bei t[3] vergessen.

    Ja, mit SetPlayerScore. Je nach dem wie dein Script aussiehst, solltest du evtl. noch SetPlayerInfo[playerid][pLevel]++; darunter einfügen.


    Zu dem zweiten Problem: Entfernst du nur die "//", wenn du es ausprobierst? Sonst nichts?



    stock SavePlayer(playerid)
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    new query[1024];
    new Float:xxKord,Float:yyKord,Float:zzKord;
    GetPlayerPos(playerid,xxKord,yyKord,zzKord);
    new typos = GetPlayerSkin(playerid);
    new interior = GetPlayerInterior(playerid);
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, MAX_PLAYER_NAME);
    format(SpielerInfo[playerid][pName], MAX_PLAYER_NAME, name);
    SpielerInfo[playerid][pGeld] = GetPlayerMoney(playerid);//1803
    format(query, sizeof(query), "UPDATE accounts SET Name = '%s', Level = '%d', Geld = '%d', Kills = '%d', Tode = '%d', Admin = '%d', Banned = '%d', Leader = '%d', Member = '%d', Team = '%d', Rank = '%d', Duty = '%d', ",
    SpielerInfo[playerid][pName], SpielerInfo[playerid][pLevel], SpielerInfo[playerid][pGeld], SpielerInfo[playerid][pKills], SpielerInfo[playerid][pTode], SpielerInfo[playerid][pAdmin],
    SpielerInfo[playerid][pBanned], SpielerInfo[playerid][pLeader], SpielerInfo[playerid][pMember], SpielerInfo[playerid][pTeam], SpielerInfo[playerid][pRank], SpielerInfo[playerid][pDuty]);
    format(query, sizeof(query), "%sSkin = '%d', Health = '%f', xKord = '%f', yKord = '%f', zKord = '%f', Interior = '%d', Carlic = '%d', Bikelic = '%d', Flylic = '%d', Bootlic = '%d', LKWlic = '%d', ", query,
    typos, SpielerInfo[playerid][pHealth], xxKord, yyKord, zzKord, interior,SpielerInfo[playerid][pCarlic],SpielerInfo[playerid][pBikelic],SpielerInfo[playerid][pFlylic],SpielerInfo[playerid][pBootlic],SpielerInfo[playerid][pLKWlic]);//1807
    format(query, sizeof(query), "%sKonto = '%d', Kontostand = '%d', Beantragt = '%d', Pin = '%d', Kontonummer = '%d', Abholen = '%d', ", query,
    SpielerInfo[playerid][Konto], SpielerInfo[playerid][Kontostand], SpielerInfo[playerid][Beantragt], SpielerInfo[playerid][Pin], SpielerInfo[playerid][Kontonr],SpielerInfo[playerid][Abholen]);//1807
    format(query, sizeof(query), "%sAlter = '%d', Geschlecht = '%d', Levelpunkte = '%d', Payday = '%d', Herkunft = '%d', Verheiratetmit = '%d', Telefonnummer = '%d', Tutorial = '%d' WHERE Name = '%s'", query,
    SpielerInfo[playerid][pAlter], SpielerInfo[playerid][pGeschlecht], SpielerInfo[playerid][pLevelpunkte], SpielerInfo[playerid][pPayday],SpielerInfo[playerid][pHerkunft], SpielerInfo[playerid][pVerheiratetmit],SpielerInfo[playerid][pTelenummer],SpielerInfo[playerid][pTut], SpielerInfo[playerid][pName]);//1807
    mysql_tquery(handle, query);
    printf("query: %s", query);
    }
    return 1;
    }


    Probiers mal so, das WHERE war doppelt. (In beiden letzten format)

    Zu 1:

    stock RequiredPoints(playerid)
    {
    new value = SpielerInfo[playerid][pLevel] * 4; //Hier wird in die Variable "value" das Level des Spielers mal 4 geschrieben, z.B. bei Level 5 steht in der Variable 20
    new p = 12 + value; //Hier wird dann der "Grundwert" (12), plus value gerechnet (in dem Fall 20), ergibt in unserem Beispiel 32
    return p; //Die Funktion gibt den Wert aus (32)
    }


    Und dann:

    public PayDay(playerid)
    {
    SendClientMessage(playerid,info,"|____________Zahltag___________|");
    GivePlayerMoney(playerid,2000);
    SendClientMessage(playerid,hinweis,"Du hast 30 Minuten gespielt, und somit Zahltag.");
    SpielerInfo[playerid][pLevelpunkte] += 1;
    if(SpielerInfo[playerid][pLevelpunkte] == RequiredPoints(playerid))//Wenn die Levelpunkte = 32 sind, dann..
    {
    GivePlayerScore(playerid,1);
    SpielerInfo[playerid][pLevelpunkte] = 0;
    SendClientMessage(playerid,erfolg,"***Herzlichen Glückwunsch: Du bist ein Jahr älter geworden!***");
    }
    return 1;
    }

    Hast du bei SetSpawnInfo auch die Informationen (außer halt die Spawnposition) für die Fraktionsmember oder nur die, der Zivis? Wenn zweiteres, mach einfach eine Abfrage:


    if(playerInfo[playerid][pMember] == 0) { SetSpawnInfo..

    Also als aller erstes solltest du dir merken, dass man Keys mit & und nicht mit == vergleicht, sprich:

    if(newkeys & KEY_SECONDARY_ATTACK)


    Und zweitens printe mal, wie LeijaT es gesagt hat.

    //Das alles in einen Befehl oder so, den du ausführst während du in der Russenmafia bist
    printf("Leader: %d",PlayerInfo[playerid][pLeader]);
    printf("Member: %d", PlayerINfo[playerid][pMember]);
    printf("Cop: %d",IsACop(playerid));


    Um herauszufinden, an welcher if-Abfrage es scheitert, tust du folgendes:

    else if (IsPlayerInRangeOfPoint(playerid,4.0,318.6134,1115.3098,1083.8828))// Russenmafia Exit
    {
    print("1");
    if(PlayerInfo[playerid][pLeader] == 23 || PlayerInfo[playerid][pMember] == 23 || IsACop(playerid))
    {
    print("2");
    SetPlayerPos(playerid,1154.7332,-1181.1477,32.8187);
    SetPlayerInterior(playerid,0);
    PlayerInfo[playerid][pInt] = 0;
    SetPlayerVirtualWorld(playerid,0);
    }
    }


    Dann schreibst du mal hier rein, was alles in der Konsole steht.

    Hallo zusammen,
    da ich inzwischen wieder Zeit habe mich mit SA:MP zu beschäftigen, biete ich mich hier als Teammitglied für euer Projekt an.


    [tabmenu]


    [tab=Kurz über mich]
    Über mich
    Mein Name ist Matthew und ich bin 17 Jahre alt. Derweil besuche ich die 10. Klasse einer Realschule, danach werde ich eine Ausbildung zum Fachinformatiker i.F. Anwendungsentwicklung anfangen. Ich wohne in der Nähe von Hannover. In meiner Freizeit mache ich Sport (Kraftsport & Basketball), treffe mich mit Kumpels und beschäftige mich mit dem Computer (Programmieren und zocken natürlich :D).
    [tab=Meine Erwartungen]
    Meine Erwartungen
    Ich erwarte, dass der-/diejenige ein "Konzept" (eine Idee) hat, welche mich überzeugt. Ich lege mich nicht auf RL/RP fest, damit habe ich aber auf jeden Fall am meisten Erfahrung. Ich erwarte nicht, dass bereits Forum/TS/Server/Script beschafft wurden (wäre aber natürlich von Vorteil!) allerdings sollten die finanziellen Möglichkeiten gegeben sein, diese zeitnah zu bersorgen.
    [tab=Meine Aufgaben]
    Meine Aufgaben
    Ich könnte auf jeden Fall als "normales" Teammitglied (Supporter, Moderator, Administrator) fungieren, in diesem Bereich habe ich auf einiges an Erfahrungen. Desweiteren könnte ich auch als Scripter tätig werden, aber eher als Zweitscripter, da mir einfach die Zeit und Ausdauer fehlt, ein komplettes Script zu scripten (sofern bereits ein Script vorhanden, könnte man darüber natürlich reden).
    //edit: Desweiteren habe ich Erfahrungen im PR-Management.
    [tab=Referenzen]
    Referenzen
    Ein paar Referenzen sind in meiner Signatur zu finden, diese sind allerdings nicht mehr wirklich auf neuestem Stand. Wenn der Bedarf besteht, kann ich gerne auf Anfrage eine Referenz erstellen.
    [/tabmenu]


    Vielen Dank fürs Lesen meines "Angebots" :D


    Mit freundlichen Grüßen,
    Key

    Das GetPlayerName muss auch unter die sscanf Abfrage, sonst wird er dir jedes mal den Namen des Spielers mit der ID 0 ausgeben.

    Du erstellst ein Befehl (z.B. /angeln), als erstes überprüfst du ob der Spieler an einem "Fish-Place" ist.

    if(IsPlayerInRangeOfPoint(playerid..)


    Jetzt gibt es zwei verschiedene Varianten (die mir gerade spontan einfallen). Entweder der Spieler muss jedes mal wieder /angeln eingeben um die Angel auszuwerfen (dann baust du evtl. ein kleinen Cooldown ein, damit man /angeln nicht spammen kann). Oder du startest ein Timer und der Spieler angelt automatisch und die Route wird alle paar Sekunden ausgeworfen.


    Auf jeden Fall erstellst du dann noch ein random mit der Anzahl der verschiedenen Fangmöglichkeiten und gibst dem Spieler dann am Ende den jeweiligen Fisch.



    new fish[MAX_PLAYERS];
    fish[playerid] = random (15); //zum Beispiel
    fishInfo[playerid][fish[playerid]]++;


    Hoffe du hast es verstanden :D

    ocmd:spec(playerid, params[])
    {
    new pID;
    if(isPlayerAnAdmin(playerid, 2))
    {
    if(IsPlayerConnected(pID) && pID != INVALID_PLAYER_ID) // Error 1
    {
    if(sscanf(params,"u",pID))return SendClientMessage(playerid,ORANGE,"Benutzung: /spec [ID]");
    TogglePlayerSpectating(playerid, 1);
    PlayerSpectatePlayer(playerid, pID); // Error 2
    return 1;
    }
    return ErrorMessages(playerid, 6);
    }
    return ErrorMessages(playerid, 2);
    }

    if (strcmp(cmd, "/wiederbeleben", true) == 0){
    print("1");
    if(IsPlayerConnected(playerid))
    {
    print("2");
    if (PlayerInfo[playerid][pMember] == 4 || PlayerInfo[playerid][pLeader] == 4)
    {
    print("3");
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    print("4");
    if(IsPlayerConnected(i) && PlayerInfo[i][pTot] == 1 && PlayerToPoint(5.0,playerid,PlayerInfo[i][pTx],PlayerInfo[i][pTy],PlayerInfo[i][pTz]))
    {
    print("5");
    new pname[256];
    GetPlayerName(i, pname, 256);
    format(string, 256, "Du hast %s, wiederbelebt!",pname);
    SendClientMessage(playerid, COLOR_LIGHTGREEN, string);
    GetPlayerName(playerid, pname, 256);
    format(string, 256, "Arzt %s hat dich wiederbelebt!",pname);
    SendClientMessage(i, COLOR_LIGHTGREEN, string);
    PlayerInfo[i][pTot] = 0;
    pIstTot[i] = 0;
    ClearAnimations(playerid);
    OnePlayAnim(playerid, "BOMBER", "BOM_Plant", 4.0, 0, 0, 0, 0, 0); // Place Bomb
    SetPlayerPos(i,PlayerInfo[i][pTx],PlayerInfo[i][pTy],PlayerInfo[i][pTz]);
    SetCameraBehindPlayer(i);
    DestroyPickup(TotenKopf[i]);
    TogglePlayerControllable(i,1);
    PlayerInfo[i][pTx] = 0.0;
    PlayerInfo[i][pTy] = 0.0;
    PlayerInfo[i][pTz] = 0.0;
    new Float:tempheal;
    GetPlayerHealth(i,tempheal);
    SetPlayerHealth(i,15.0);
    }
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD1, " Du bist kein Arzt!");
    }
    }
    return 1;
    }


    Füg' das so mal in dein Script ein und sag, welche Zahl die letzte ist, die geprintet wird ( in samp-server.exe ).

    Ich glaube ich hab den Begriff "Fantasie Burg" bei Google Bilder eingegeben. Ansonsten guckst du mal auf Wallpaper-Websiten unter der Kategorie Fantasie.

    new textdrawt[MAX_PLAYERS], counter[MAX_PLAYERS];
    textdrawt[playerid] = SetTimerEx("TextdrawTimer",200,1,"%i",playerid);
    public TextdrawTimer(playerid)
    {
    //textdrawt[playerid]++;
    counter[playerid]++;
    if(counter[playerid] == 1)
    {
    TextDrawColor(WosTextMenu0,0xFFFFFFFF);
    return 1;
    }
    else if(counter[playerid] == 2)
    {
    TextDrawColor(WosTextMenu0,0xFFFFFFEE);
    return 1;
    }
    else if(counter[playerid] == 3)
    {
    TextDrawColor(WosTextMenu0,0xFFFFFFDD);
    return 1;
    }
    else if(counter[playerid] == 4)
    {
    TextDrawColor(WosTextMenu0,0xFFFFFFCC);
    return 1;
    }
    else if(counter[playerid] == 5)
    {
    TextDrawColor(WosTextMenu0,0xFFFFFFBB);
    return 1;
    }
    else if(counter[playerid] == 6)
    {
    TextDrawColor(WosTextMenu0,0xFFFFFFAA);
    return 1;
    }
    else if(counter[playerid] == 7)
    {
    TextDrawColor(WosTextMenu0,0xFFFFFF99);
    return 1;
    }
    else if(counter[playerid] == 8)
    {
    TextDrawColor(WosTextMenu0,0xFFFFFF88);
    return 1;
    }
    else if(counter[playerid] == 9)
    {
    TextDrawColor(WosTextMenu0,0xFFFFFF77);
    return 1;
    }
    else if(counter[playerid] == 10)
    {
    TextDrawColor(WosTextMenu0,0xFFFFFF66);
    return 1;
    }
    else if(counter[playerid] == 11)
    {
    TextDrawColor(WosTextMenu0,0xFFFFFF55);
    return 1;
    }
    else if(counter[playerid] == 12)
    {
    TextDrawColor(WosTextMenu0,0xFFFFFF44);
    return 1;
    }
    else if(counter[playerid] == 13)
    {
    TextDrawColor(WosTextMenu0,0xFFFFFF33);
    return 1;
    }
    else if(counter[playerid] == 14)
    {
    TextDrawColor(WosTextMenu0,0xFFFFFF22);
    return 1;
    }
    else if(counter[playerid] ==15)
    {
    TextDrawColor(WosTextMenu0,0xFFFFFF11);
    return 1;
    }
    else if(counter[playerid] == 16)
    {
    TextDrawColor(WosTextMenu0,0xFFFFFF00);
    KillTimer(textdrawt[playerid]);
    counter[playerid] = 0;
    return 1;
    }
    return 1;
    }