Angepinnt [SAMMELTHREAD] Kleine Scripting Fragen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • so geht es

    PAWN-Quellcode

    1. public OnFilterScriptInit(){ print("-------------------------------------------------------------"); print(" Fall Event System By RooT"); fallroomO(); //Alle FallArena Objecte werden Geladen. print(" Fall Event System Arena Objecte wurden erfolgreich erstellt."); print(" Fall Event System wurde erfolgreich geladen."); print("-------------------------------------------------------------"); return 1;}public OnFilterScriptExit(){ fallmapsd(); //Alle Objecte werden Gelöscht. //fallroomD(); //Arena Objecte werden Gelöscht. print("-------------------------------------------------------------"); print(" Fall Event System wurde erfolgreich heruntergefahren."); print("-------------------------------------------------------------"); return 1;}



    PAWN-Quellcode

    1. stock fallroomD() // Die FallArena wird entfernt{ for(new i=0; i<sizeof(FallRoom); i++) { DestroyObject(FallRoom[i]); }}




    //Edit mir ist gerade aufgefallen sobald eins von den beiden nicht geladen wird geht es..

    entweder nur Fallmapsd
    oder nur FallRoomd

    PAWN-Quellcode

    1. stock fallmapsd() // Alle map objecte werden gelöscht
    2. {
    3. // Fallmapeins Objecte werden gelöscht
    4. for(new i=0; i<sizeof(fallmapeins); i++)
    5. {
    6. DestroyObject(fallmapeins[i]);
    7. }
    8. // Fallmapzwei Objecte werden gelöscht
    9. for(new i=0; i<sizeof(fallmapzwei); i++)
    10. {
    11. DestroyObject(fallmapzwei[i]);
    12. }
    13. }
    14. stock fallroomD() // Die FallArena wird entfernt
    15. {
    16. for(new i=0; i<sizeof(FallRoom); i++)
    17. {
    18. DestroyObject(FallRoom[i]);
    19. }
    20. }
    Alles anzeigen
  • Habe es jetzt sogeschireben und es geht sehr komisch

    PAWN-Quellcode

    1. public OnFilterScriptExit()
    2. {
    3. fallroomD(); //Arena Objecte werden Gelöscht.
    4. print("-------------------------------------------------------------");
    5. fallmapsd(); //Alle Objecte werden Gelöscht.
    6. print(" Fall Event System wurde erfolgreich heruntergefahren.");
    7. print("-------------------------------------------------------------");
    8. return 1;
    9. }
  • So, habe festgestellt dass mein Gamemode leider nocht nicht so funktioniert :D
    Folgendes Problem:
    Wenn ein Spieler stirbt, bisher getestet mit 2 Spielern auf dem Server, in jeweils einem anderen Team, dann wird das Spiel direkt beendet.

    Das heißt: TeamRemaing() wird aufgerufen, jedoch weiß ich nicht warum da ich mit GetActiveTeamCount ja abfrage ob 2 Teams Spieler besitzen.
    Das passiert bspw. wenn ein Spieler runterfällt, sein Bett noch existiert, also er respawnen kann, also genau da soll es nicht aufgerufen werden.
    Wird der Spieler getötet und sein Bett ist weg kommt er in das TEAM_SPECTATOR, wodurch dann GetActiveTeamCount erkennt dass der Spieler nicht mehr im ursprünglichen Team ist, weshalb das Spiel dann beendet werden soll.



    Hier mal OnPlayerDeath

    C-Quellcode

    1. public OnPlayerDeath(playerid, killerid, reason)
    2. {
    3. PlayerInfo[playerid][pDeaths]++;
    4. if(killerid != INVALID_PLAYER_ID) PlayerInfo[killerid][pKills]++;
    5. ResetPlayerData(playerid);
    6. new pname[MAX_PLAYER_NAME];
    7. GetPlayerName(playerid, pname, sizeof(pname));
    8. new matediedstring[128];
    9. HideMenuForPlayer(ammunation,playerid);
    10. HideMenuForPlayer(pistols,playerid);
    11. HideMenuForPlayer(microsmg,playerid);
    12. HideMenuForPlayer(shotguns,playerid);
    13. HideMenuForPlayer(items,playerid);
    14. HideMenuForPlayer(smg,playerid);
    15. HideMenuForPlayer(rifles,playerid);
    16. HideMenuForPlayer(assaultrifle,playerid);
    17. HideMenuForPlayer(Grenades,playerid);
    18. HideMenuForPlayer(melee,playerid);
    19. HideMenuForPlayer(special,playerid);
    20. HideMenuForPlayer(shopmenu,playerid);
    21. HideMenuForPlayer(yesno,playerid);
    22. if(GetPlayerWeapon(playerid) == 16)
    23. {
    24. new Float:x, Float:y, Float:z;
    25. GetPlayerPos(playerid,x,y,z);
    26. CreateExplosion(x,y,z,7,10);
    27. CreateExplosion(x,y,z,9,10);
    28. }
    29. if(BedStates[gPlayerTeamSelection[playerid]] == 0)
    30. {
    31. format(matediedstring,sizeof(matediedstring),"SERVER: %s (%d) has been killed, watch out! %d players left in Team %s",pname,playerid,GetTeamPlayerCount(gPlayerTeamSelection[playerid])-1,GetPlayerTeamColorTag(playerid));
    32. SendClientMessageToAll(COLOR_WHITE,matediedstring);
    33. }
    34. new playercash;
    35. playercash = GetPlayerMoney(playerid);
    36. SendDeathMessage(killerid, playerid, reason); // Shows the kill in the killfeed
    37. gPlayerHasTeamSelected[playerid] = 0;
    38. TextDrawHideForPlayer(playerid,txtTimeDisp);
    39. playercash = GetPlayerMoney(playerid);
    40. ResetPlayerMoney(playerid);
    41. GivePlayerMoneyText(playerid, -playercash);
    42. LastMoney[playerid]=playercash;
    43. #if defined BEDSSYSTEM
    44. #if BEDSSYSTEM==0
    45. if(killerid != playerid && killerid != INVALID_PLAYER_ID)
    46. {
    47. GivePlayerMoneyText(killerid,playercash);
    48. }
    49. #elseif BEDSSYSTEM==1
    50. if(killerid != playerid && killerid != INVALID_PLAYER_ID)
    51. {
    52. if(GetPlayerScore(killerid) >= 100)
    53. GivePlayerMoneyText(killerid,playercash+playercash/4);
    54. if(GetPlayerScore(killerid) >= 500)
    55. GivePlayerMoneyText(killerid,playercash+playercash/2);
    56. if(GetPlayerScore(killerid) >= 1000)
    57. GivePlayerMoneyText(killerid,playercash * 2);
    58. }
    59. #endif
    60. #else
    61. if(killerid != playerid && killerid != INVALID_PLAYER_ID)
    62. {
    63. GivePlayerMoneyText(killerid,playercash);
    64. }
    65. #endif
    66. if(BedStates[gPlayerTeamSelection[playerid]] == 0)
    67. {
    68. SendClientMessageEx(playerid,COLOR_WHITE,"SERVER: Unable to respawn. The bed of team %s {FFFFFF}already has been destroyed.",GetTeamColorTag(playerid));
    69. SendClientMessage(playerid,COLOR_WHITE,"SERVER: Entering spectator mode..");
    70. SetPlayerCameraPos(playerid,243.2876,1802.5547,7.4141);
    71. SetPlayerCameraLookAt(playerid,243.1261,1805.2798,8.3794);
    72. gPlayerTeamSelection[playerid] =TEAM_SPECTATOR;
    73. SetPlayerColor(playerid,COLOR_WHITE);
    74. SpecRandomPlayer(playerid);
    75. }
    76. if(GetActiveTeamCount() < 2 && GameHasStarted)
    77. {
    78. SetTimer("TeamRemaining",1000,false);
    79. printf("Timer set");
    80. }
    81. if(IsBeingSpeced[playerid] == 1)
    82. {
    83. for(new i;i<MAX_PLAYERS;i++)
    84. {
    85. if(spectatorid[i] == playerid)
    86. {
    87. SpecRandomPlayer(i);
    88. }
    89. }
    90. }
    91. return 1;
    92. }
    Alles anzeigen



    TeamRemaining hier


    C-Quellcode

    1. public TeamRemaining()
    2. {
    3. printf("TeamRemaining called");
    4. if(!GameHasStarted) return 0;
    5. new remainingTeamID;
    6. if(GetActiveTeamCount() < 2)
    7. {
    8. for(new i;i<TEAMSIZE;i++)
    9. {
    10. if(GetTeamPlayerCount(i) > 0)
    11. {
    12. remainingTeamID=i;
    13. break;
    14. }
    15. else
    16. {
    17. continue;
    18. }
    19. }
    20. }
    21. else
    22. {
    23. return 0;
    24. }
    25. for(new d;d<MAX_PLAYERS;d++)
    26. {
    27. SendClientMessageEx(d,COLOR_WHITE,"SERVER: All remaining teams have been wiped. Team %s {FFFFFF}has won the game!",GetTeamColorTag(remainingTeamID));
    28. }
    29. printf("SERVER: All remaining teams have been wiped. Team %d has won the game!",remainingTeamID);
    30. for(new o;o<MAX_PLAYERS;o++)
    31. {
    32. ResetPlayerData(o);
    33. }
    34. FinishedGame();
    35. return 1;
    36. }
    Alles anzeigen
    GetActiveTeamCount Funktion, und die GetTeamPlayerCount Funktion.


    C-Quellcode

    1. stock GetTeamPlayerCount(teamid)
    2. {
    3. new playercount = 0;
    4. for(new i = 0; i < MAX_PLAYERS; i++)
    5. {
    6. if(!PlayerInfo[i][pSpawned]) continue;
    7. if(!gPlayerHasTeamSelected[i]) continue;
    8. if(GetPlayerState(i) == PLAYER_STATE_NONE) continue;
    9. if(gPlayerTeamSelection[i] != teamid) continue;
    10. playercount++;
    11. }
    12. return playercount;
    13. }
    14. stock GetActiveTeamCount()
    15. {
    16. new i=0,count=0;
    17. while(i<TEAMSIZE)
    18. {
    19. if(GetTeamPlayerCount(i) > 0)
    20. {
    21. count++;
    22. }
    23. i++;
    24. }
    25. return count;
    26. }
    Alles anzeigen
  • Hey,

    Kurze frage:

    PAWN-Quellcode

    1. [code=c]ocmd:spawnchange(playerid)
    2. {
    3. if(Spieler[playerid][pHouseKey] == -255 || Spieler[playerid][pFraktion] == 0)
    4. {
    5. format(DialogString, sizeof(DialogString), "{247BA6}1. {FFFFFF}Zivilisten Spawn");
    6. ShowPlayerDialog(playerid, DIALOG_SPAWNCHANGE, DIALOG_STYLE_LIST, ""SERVER_FARBE"Spawnchange", DialogString, "OK", "Abbrechen");
    7. }
    8. else
    9. {
    10. new HausName = Haus[Spieler[playerid][pHouseKey]][hName];
    11. new HausNummer = Spieler[playerid][pHouseKey];
    12. strdel(DialogString, 0, sizeof(DialogString));
    13. format(DialogString, sizeof(DialogString), "{247BA6}1. {FFFFFF}Zivilisten Spawn\n{247BA6}2. {FFFFFF}%s\n{247BA6}3. {FFFFFF}%s: Hausnummer: %d", GetPlayerFraktionName(playerid), HausName, HausNummer);
    14. ShowPlayerDialog(playerid, DIALOG_SPAWNCHANGE, DIALOG_STYLE_LIST, ""SERVER_FARBE"Spawnchange", DialogString, "OK", "Abbrechen");
    15. }
    16. return 1;
    17. }[/code]
    Alles anzeigen


    So sieht derzeit der Spawnchange aus,

    Screen:




    Normal sollte es so sein:

    Hat der Spieler kein Haus also -255 sollte ihn kein Haus angezeigt werden. -> Man könnte sagen das er kein Haus besitzt oder nicht eingemietet ist.
    Ist der Spieler in einer Fraktion und hat kein Haus sollte natürlich die Fraktion angezeigt werden. -> Man könnte sagen das er kein Haus besitzt oder nicht eingemietet ist.
    Hat er keine Fraktion & Kein Haus sollte halt nur der Spawn angezeigt werden wie man oben schon sieht.

    -> Der Hausname wird auch nicht korrekt angezeigt.
  • Guten Abend!

    Ich kann keine Autos abschleppen. Was könnte da falsch sein?

    PAWN-Quellcode

    1. if(newkeys & KEY_ACTION)
    2. {
    3. if(!IsPlayerInAnyVehicle(playerid))return 1;
    4. if(GetVehicleModel(GetPlayerVehicleID(playerid)) != 525)return 1;
    5. new vID = GetPlayerVehicleID(playerid);
    6. if(IsTrailerAttachedToVehicle(vID))
    7. {
    8. DetachTrailerFromVehicle(vID);
    9. }
    10. else
    11. {
    12. new v = GetClosestVehicleToVehicle(vID);
    13. if(v != INVALID_VEHICLE_ID) AttachTrailerToVehicle(v,vID);
    14. }
    15. }
    16. return 1;
    17. }
    18. stock GetClosestVehicleToVehicle(vID, Float:abstand=8.0)
    19. {
    20. new Float:xc, Float:yc, Float:zc;
    21. GetVehiclePos(vID, xc, yc, zc);
    22. for(new v=GetVehiclePoolSize(); v!=0; v--)
    23. {
    24. if(v==vID || GetVehicleDistanceFromPoint(v, xc, yc, zc) > abstand) continue;
    25. return v;
    26. }
    27. return INVALID_VEHICLE_ID;
    28. }
    Alles anzeigen

    MfG

    Edit: Wenn ich es in nem Blankscript teste funktioneirt es. Kann es ein, das irgendwas die Taste blockt?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Allrounder18 ()

  • Neu

    Hallo ich habe mal eine Frage wie kann ich abfragen ob ich das Object bereits schonmal hatte also der suchst sich ja ein Random object aus dem stock raus nur er soll das object was schon gemovet worden ist nicht nochmal moven.

    PAWN-Quellcode

    1. public Pfallmap2()
    2. {
    3. new r = random(FALLMAPZWEIC);
    4. if(IsValidObject(fallmapzwei[r]))
    5. {
    6. new Float:x, Float:y, Float:z;
    7. GetObjectPos(fallmapzwei[r], x, y, z);
    8. new Float:RotX,Float:RotY,Float:RotZ;
    9. GetObjectRot(fallmapzwei[r], RotX, RotY, RotZ);
    10. MoveObject(fallmapzwei[r], x, y, z, 1, RotX, RotY-4.5, RotZ);
    11. SetTimerEx("@Fallmapzwei1",100*3,0, "i",r);
    12. }
    13. }
    Alles anzeigen

  • Neu

    iTsRooT schrieb:

    Hog schrieb:

    kann man es in samp so machen das mehre türen so aufgehen ?



    so wie es damals die alten wachanlagen die türen aufgingen die sich so zusammen gefaltet haben wie auf dem Bild ?
    du kannst die Funktion MoveObject() benutzen.Kann dir heute Nachmittag mal was machen
    Mit MoveObject(oid,x,y,z,1);
    und MoveObject(oid,x,y,z,1,rx,ry,rz);
    war es doch oder nur wie die türen dann mappen das die sich so auf falten zb
    20Fps in GTA in Full HD
    Grafikkarte 512MB Spiecher 2000 iwas Baujahr

    St**** schrieb:

    Hat nichts mit Grafikkarte zu tuhen.
  • Neu

    Hog schrieb:

    iTsRooT schrieb:

    Hog schrieb:

    kann man es in samp so machen das mehre türen so aufgehen ?



    so wie es damals die alten wachanlagen die türen aufgingen die sich so zusammen gefaltet haben wie auf dem Bild ?
    du kannst die Funktion MoveObject() benutzen.Kann dir heute Nachmittag mal was machen
    Mit MoveObject(oid,x,y,z,1);und MoveObject(oid,x,y,z,1,rx,ry,rz);
    war es doch oder nur wie die türen dann mappen das die sich so auf falten zb
    Ja falls es nicht so aussieht das es sich faltet das müsst du es mehrmals moven also versuch du erstmal wenn du es nicht schaffst helfe ich dir gerne
  • Neu

    Allrounder18 schrieb:

    Guten Abend!

    Ich kann keine Autos abschleppen. Was könnte da falsch sein?

    PAWN-Quellcode

    1. if(newkeys & KEY_ACTION)
    2. {
    3. if(!IsPlayerInAnyVehicle(playerid))return 1;
    4. if(GetVehicleModel(GetPlayerVehicleID(playerid)) != 525)return 1;
    5. new vID = GetPlayerVehicleID(playerid);
    6. if(IsTrailerAttachedToVehicle(vID))
    7. {
    8. DetachTrailerFromVehicle(vID);
    9. }
    10. else
    11. {
    12. new v = GetClosestVehicleToVehicle(vID);
    13. if(v != INVALID_VEHICLE_ID) AttachTrailerToVehicle(v,vID);
    14. }
    15. }
    16. return 1;
    17. }
    18. stock GetClosestVehicleToVehicle(vID, Float:abstand=8.0)
    19. {
    20. new Float:xc, Float:yc, Float:zc;
    21. GetVehiclePos(vID, xc, yc, zc);
    22. for(new v=GetVehiclePoolSize(); v!=0; v--)
    23. {
    24. if(v==vID || GetVehicleDistanceFromPoint(v, xc, yc, zc) > abstand) continue;
    25. return v;
    26. }
    27. return INVALID_VEHICLE_ID;
    28. }
    Alles anzeigen
    MfG

    Edit: Wenn ich es in nem Blankscript teste funktioneirt es. Kann es ein, das irgendwas die Taste blockt?
    Es funktioniert auch nicht, wenn cih es mit einer anderen Taste versuche.
    @Kaliber
  • Neu

    Mach es mal so @Allrounder18

    PAWN-Quellcode

    1. if(newkeys & KEY_ACTION)
    2. {
    3. if(!IsPlayerInAnyVehicle(playerid))return 1;
    4. if(GetVehicleModel(GetPlayerVehicleID(playerid)) != 525)return 1;
    5. new cID = GetPlayerVehicleID(playerid);
    6. if(IsTrailerAttachedToVehicle(cID))
    7. {
    8. DetachTrailerFromVehicle(cID);
    9. }
    10. else
    11. {
    12. new carID = INVALID_VEHICLE_ID;
    13. new Float:abstand = 8;
    14. new Float:x, Float:y, Float:z;
    15. GetVehiclePos(cID, x, y, z);
    16. for(new i=0; i<MAX_VEHICLES; i++)
    17. {
    18. if(!IsVehicleStreamedIn(i, playerid))continue;
    19. if(i==cID)continue;
    20. if(GetVehicleDistanceFromPoint(i, x, y, z) < abstand)
    21. {
    22. abstand = GetVehicleDistanceFromPoint(i, x, y, z);
    23. carID = i;
    24. }
    25. }
    26. if(carID != INVALID_VEHICLE_ID)
    27. {
    28. AttachTrailerToVehicle(carID, cID);
    29. }
    30. }
    31. }
    Alles anzeigen
  • Neu

    iTsRooT schrieb:

    Hallo ich habe mal eine Frage wie kann ich abfragen ob ich das Object bereits schonmal hatte also der suchst sich ja ein Random object aus dem stock raus nur er soll das object was schon gemovet worden ist nicht nochmal moven.

    PAWN-Quellcode

    1. public Pfallmap2(){ new r = random(FALLMAPZWEIC); if(IsValidObject(fallmapzwei[r])) { new Float:x, Float:y, Float:z; GetObjectPos(fallmapzwei[r], x, y, z); new Float:RotX,Float:RotY,Float:RotZ; GetObjectRot(fallmapzwei[r], RotX, RotY, RotZ); MoveObject(fallmapzwei[r], x, y, z, 1, RotX, RotY-4.5, RotZ); SetTimerEx("@Fallmapzwei1",100*3,0, "i",r); }}

  • Neu

    Hallo!

    Wie mache ich einen Befehl damit ich meine FPS ingame rausfinde?
    Am besten sofern mögich nur /fps ohne einer ID.

    PAWN-Quellcode

    1. ocmd:fps(playerid,params[])
    2. {
    3. new TargetID, pFPS,string[128];
    4. if(sscanf(params, "u", TargetID))SendClientMessage(playerid, ROT, "USAGE: /fps (nick/id) - Enter a valid Nick / ID");
    5. format(string, sizeof(string), "Fps is: %d",pFPS);
    6. SendClientMessage(playerid, WEISS, string);
    7. return 1;
    8. }
    Der hier funktioneiert nicht wirklich, da ist FPS immer 0.

    Danke im Voraus

    MfG
  • Neu

    Du fragst ja nirgend die FPS vom Spieler ab.

    PAWN-Quellcode

    1. stock GetPlayerFPS(playerid)
    2. {
    3. SetPVarInt(playerid, "DrunkL", GetPlayerDrunkLevel(playerid));
    4. if(GetPVarInt(playerid, "DrunkL") < 100) SetPlayerDrunkLevel(playerid, 2000);
    5. else{
    6. if(GetPVarInt(playerid, "LDrunkL") != GetPVarInt(playerid, "DrunkL"))
    7. {
    8. SetPVarInt(playerid, "FPS", (GetPVarInt(playerid, "LDrunkL") - GetPVarInt(playerid, "DrunkL")));
    9. SetPVarInt(playerid, "LDrunkL", GetPVarInt(playerid, "DrunkL"));
    10. if((GetPVarInt(playerid, "FPS") > 0) && (GetPVarInt(playerid, "FPS") < 256))
    11. {
    12. return GetPVarInt(playerid, "FPS") - 1;
    13. }
    14. }
    15. }
    16. return 0;
    17. }
    Alles anzeigen
    Ich helfe zu allen Fragen bezüglich PAWN Scripting gerne weiter.
    Ich biete auch einen Scripting Service an: Scripting Service

    Konversation: Konversation starten

    Discord: LeonMrBonnie#2251