[SAMMELTHREAD] Kleine Scripting Fragen

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
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
  • sInfo[playerid][Money] += money machen

    So nicht, aber so:
    sInfo[playerid][Money] -= 500;
    So werden von "Money" 500 abgezogen.


    @[LnD]JustMe.77
    Dafür kannst du ja dann GetPlayerPos verwenden. Du gehst einfach durch alle Spieler (Schleife) und dann kannst du mithilfe von GetPlayerPos die Koordinaten ermitteln und dann die Abfrage mit IsPlayerInRangeOfPoint machen.

  • Irgendein Spieler @Jeffry.


    stock IsAnyPlayerInRangeOfPlayer(playerid, Float:range)
    {
    if(!IsPlayerConnected(playerid)) return 0;
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i) || IsPlayerNPC(i) || i == playerid) continue;
    if(IsPlayerInRangeOfPoint(i, range, x, y, z)) return 1;
    }
    return 0;
    }


    Dann kannst du es so nutzen:
    if(IsAnyPlayerInRangeOfPlayer(playerid, 5.0))
    {
    SendClientMessage(playerid, 0xFF0000FF, "Error: Dir ist jemand zu nahe.");
    return 1;
    }

  • @Jeffry


    Während du mir geantwortest hast, hatte ich doch eine Idee mit IsPlayerInRangeOfPoint. Ist deine Version effektiver?
    Meine sieht so aus (ungetestet):



    CMD:respawn(playerid, params[]) {



    new Float:hp;
    new playerID, Float:Pos[3] ;
    GetPlayerHealth(playerid,hp);
    GetPlayerPos(playerID,Pos[0],Pos[1],Pos[2]);
    if (hp < 70.0)
    {
    SendClientMessage(playerid, -1,"{FF1717}ERROR:{FFFFFF} You need at least {FF0000}70 HP{FFFFFF} to change your Spawn.");
    return 1;
    }
    if (IsPlayerInRangeOfPoint(playerid, 5.0, Pos[0], Pos[1], Pos[2]))
    {
    SendClientMessage(playerid, -1,"{FF1717}ERROR:{FFFFFF} You can't respawn yourself if a player is to close.");
    return 1;
    }
    else
    if(BlockRespawn[playerid] > gettime()) return
    SendClientMessage(playerid,-1, "{FF1717}ERROR:{FFFFFF} Wait {FF1717}60{FFFFFF} seconds till you can respawn yourself again.");
    {
    BlockRespawn[playerid] = gettime() + 60;
    SetPlayerRandomPos(playerid);
    SendClientMessage(playerid,-1, "Respawned succesfully.");
    }
    return 1;
    }


    Mit freundlichen Grüßen
    JustMe.77 8)

  • Ich habe es so beim Spieler laden


    geprintet wird es so
    5000
    1 sInfo 5000
    Get 0


    Code
    GivePlayerMoney(playerid,cache_get_field_content_int(0,"Money",dbhandle));
    	printf("1 sInfo %d",sInfo[playerid][Money]);
    	printf("Get %d",GetPlayerMoney(playerid));


    Und Mein Stock

  • Wenn du auch GetPlayerMoney dafür nutzen willst, dann musst du das auch hooken:
    stock my_GetPlayerMoney(playerid)
    {
    if(playerid < 0 || playerid >= sizeof(sInfo)) return 0;
    return sInfo[playerid][Money];
    }
    #if defined _ALS_GetPlayerMoney
    #undef GetPlayerMoney
    #else
    #define _ALS_GetPlayerMoney
    #endif
    #define GetPlayerMoney my_GetPlayerMoney

  • Jetze steht in der Datenbank 4999 und es wird auch 4999 geprintet habe aber ingame nichts


    [30/01/2016 23:33:53] 4999
    [30/01/2016 23:33:53] 4999
    [30/01/2016 23:33:53] 1 sInfo 4999
    [30/01/2016 23:33:53] Get 4999




    Code
    GivePlayerMoney(playerid,cache_get_field_content_int(0,"Money",dbhandle));
    	printf("1 sInfo %d",sInfo[playerid][Money]);
    	printf("Get %d",GetPlayerMoney(playerid));
  • Geladen wird jetze alles richtig aber wenn ich das Befehl ausführe wird zwar mein Geld ingame abgezogen aber kein Print

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen