Das ist merkwürdig.
Du könntest noch versuchen, de stocks jeweils noch am Ende ein return 1; hinzuzufügen, ob das hilft.
Sonst würde mir spontan nichts einfallen, was hier das Problem ist, aber wenn es dann so auch geht, kannst du es auch so schreiben.
[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
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
-
-
So, habe festgestellt dass mein Gamemode leider nocht nicht so funktioniert
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
Alles anzeigenpublic OnPlayerDeath(playerid, killerid, reason) { PlayerInfo[playerid][pDeaths]++; if(killerid != INVALID_PLAYER_ID) PlayerInfo[killerid][pKills]++; ResetPlayerData(playerid); new pname[MAX_PLAYER_NAME]; GetPlayerName(playerid, pname, sizeof(pname)); new matediedstring[128]; HideMenuForPlayer(ammunation,playerid); HideMenuForPlayer(pistols,playerid); HideMenuForPlayer(microsmg,playerid); HideMenuForPlayer(shotguns,playerid); HideMenuForPlayer(items,playerid); HideMenuForPlayer(smg,playerid); HideMenuForPlayer(rifles,playerid); HideMenuForPlayer(assaultrifle,playerid); HideMenuForPlayer(Grenades,playerid); HideMenuForPlayer(melee,playerid); HideMenuForPlayer(special,playerid); HideMenuForPlayer(shopmenu,playerid); HideMenuForPlayer(yesno,playerid); if(GetPlayerWeapon(playerid) == 16) { new Float:x, Float:y, Float:z; GetPlayerPos(playerid,x,y,z); CreateExplosion(x,y,z,7,10); CreateExplosion(x,y,z,9,10); } if(BedStates[gPlayerTeamSelection[playerid]] == 0) { 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)); SendClientMessageToAll(COLOR_WHITE,matediedstring); } new playercash; playercash = GetPlayerMoney(playerid); SendDeathMessage(killerid, playerid, reason); // Shows the kill in the killfeed gPlayerHasTeamSelected[playerid] = 0; TextDrawHideForPlayer(playerid,txtTimeDisp); playercash = GetPlayerMoney(playerid); ResetPlayerMoney(playerid); GivePlayerMoneyText(playerid, -playercash); LastMoney[playerid]=playercash; #if defined BEDSSYSTEM #if BEDSSYSTEM==0 if(killerid != playerid && killerid != INVALID_PLAYER_ID) { GivePlayerMoneyText(killerid,playercash); } #elseif BEDSSYSTEM==1 if(killerid != playerid && killerid != INVALID_PLAYER_ID) { if(GetPlayerScore(killerid) >= 100) GivePlayerMoneyText(killerid,playercash+playercash/4); if(GetPlayerScore(killerid) >= 500) GivePlayerMoneyText(killerid,playercash+playercash/2); if(GetPlayerScore(killerid) >= 1000) GivePlayerMoneyText(killerid,playercash * 2); } #endif #else if(killerid != playerid && killerid != INVALID_PLAYER_ID) { GivePlayerMoneyText(killerid,playercash); } #endif if(BedStates[gPlayerTeamSelection[playerid]] == 0) { SendClientMessageEx(playerid,COLOR_WHITE,"SERVER: Unable to respawn. The bed of team %s {FFFFFF}already has been destroyed.",GetTeamColorTag(playerid)); SendClientMessage(playerid,COLOR_WHITE,"SERVER: Entering spectator mode.."); SetPlayerCameraPos(playerid,243.2876,1802.5547,7.4141); SetPlayerCameraLookAt(playerid,243.1261,1805.2798,8.3794); gPlayerTeamSelection[playerid] =TEAM_SPECTATOR; SetPlayerColor(playerid,COLOR_WHITE); SpecRandomPlayer(playerid); } if(GetActiveTeamCount() < 2 && GameHasStarted) { SetTimer("TeamRemaining",1000,false); printf("Timer set"); } if(IsBeingSpeced[playerid] == 1) { for(new i;i<MAX_PLAYERS;i++) { if(spectatorid[i] == playerid) { SpecRandomPlayer(i); } } } return 1; }
TeamRemaining hier
C
Alles anzeigenpublic TeamRemaining() { printf("TeamRemaining called"); if(!GameHasStarted) return 0; new remainingTeamID; if(GetActiveTeamCount() < 2) { for(new i;i<TEAMSIZE;i++) { if(GetTeamPlayerCount(i) > 0) { remainingTeamID=i; break; } else { continue; } } } else { return 0; } for(new d;d<MAX_PLAYERS;d++) { SendClientMessageEx(d,COLOR_WHITE,"SERVER: All remaining teams have been wiped. Team %s {FFFFFF}has won the game!",GetTeamColorTag(remainingTeamID)); } printf("SERVER: All remaining teams have been wiped. Team %d has won the game!",remainingTeamID); for(new o;o<MAX_PLAYERS;o++) { ResetPlayerData(o); } FinishedGame(); return 1; }
GetActiveTeamCount Funktion, und die GetTeamPlayerCount Funktion.
C
Alles anzeigenstock GetTeamPlayerCount(teamid) { new playercount = 0; for(new i = 0; i < MAX_PLAYERS; i++) { if(!PlayerInfo[i][pSpawned]) continue; if(!gPlayerHasTeamSelected[i]) continue; if(GetPlayerState(i) == PLAYER_STATE_NONE) continue; if(gPlayerTeamSelection[i] != teamid) continue; playercount++; } return playercount; } stock GetActiveTeamCount() { new i=0,count=0; while(i<TEAMSIZE) { if(GetTeamPlayerCount(i) > 0) { count++; } i++; } return count; }
-
Hey,
Kurze frage:
[code=c]ocmd:spawnchange(playerid)
{
if(Spieler[playerid][pHouseKey] == -255 || Spieler[playerid][pFraktion] == 0)
{
format(DialogString, sizeof(DialogString), "{247BA6}1. {FFFFFF}Zivilisten Spawn");
ShowPlayerDialog(playerid, DIALOG_SPAWNCHANGE, DIALOG_STYLE_LIST, ""SERVER_FARBE"Spawnchange", DialogString, "OK", "Abbrechen");
}
else
{
new HausName = Haus[Spieler[playerid][pHouseKey]][hName];
new HausNummer = Spieler[playerid][pHouseKey];
strdel(DialogString, 0, sizeof(DialogString));
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);
ShowPlayerDialog(playerid, DIALOG_SPAWNCHANGE, DIALOG_STYLE_LIST, ""SERVER_FARBE"Spawnchange", DialogString, "OK", "Abbrechen");
}
return 1;
}[/code]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?
Code
Alles anzeigenif(newkeys & KEY_ACTION) { if(!IsPlayerInAnyVehicle(playerid))return 1; if(GetVehicleModel(GetPlayerVehicleID(playerid)) != 525)return 1; new vID = GetPlayerVehicleID(playerid); if(IsTrailerAttachedToVehicle(vID)) { DetachTrailerFromVehicle(vID); } else { new v = GetClosestVehicleToVehicle(vID); if(v != INVALID_VEHICLE_ID) AttachTrailerToVehicle(v,vID); } } return 1; } stock GetClosestVehicleToVehicle(vID, Float:abstand=8.0) { new Float:xc, Float:yc, Float:zc; GetVehiclePos(vID, xc, yc, zc); for(new v=GetVehiclePoolSize(); v!=0; v--) { if(v==vID || GetVehicleDistanceFromPoint(v, xc, yc, zc) > abstand) continue; return v; } return INVALID_VEHICLE_ID; }
MfGEdit: Wenn ich es in nem Blankscript teste funktioneirt es. Kann es ein, das irgendwas die Taste blockt?
-
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 ?
-
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 -
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.
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);
}
} -
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 -
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 zbJa 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
-
Guten Abend!
Ich kann keine Autos abschleppen. Was könnte da falsch sein?
Code
Alles anzeigenif(newkeys & KEY_ACTION) { if(!IsPlayerInAnyVehicle(playerid))return 1; if(GetVehicleModel(GetPlayerVehicleID(playerid)) != 525)return 1; new vID = GetPlayerVehicleID(playerid); if(IsTrailerAttachedToVehicle(vID)) { DetachTrailerFromVehicle(vID); } else { new v = GetClosestVehicleToVehicle(vID); if(v != INVALID_VEHICLE_ID) AttachTrailerToVehicle(v,vID); } } return 1; } stock GetClosestVehicleToVehicle(vID, Float:abstand=8.0) { new Float:xc, Float:yc, Float:zc; GetVehiclePos(vID, xc, yc, zc); for(new v=GetVehiclePoolSize(); v!=0; v--) { if(v==vID || GetVehicleDistanceFromPoint(v, xc, yc, zc) > abstand) continue; return v; } return INVALID_VEHICLE_ID; }
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 -
-
Mach es mal so @Allrounder18
if(newkeys & KEY_ACTION)
{
if(!IsPlayerInAnyVehicle(playerid))return 1;
if(GetVehicleModel(GetPlayerVehicleID(playerid)) != 525)return 1;
new cID = GetPlayerVehicleID(playerid);
if(IsTrailerAttachedToVehicle(cID))
{
DetachTrailerFromVehicle(cID);
}
else
{
new carID = INVALID_VEHICLE_ID;
new Float:abstand = 8;
new Float:x, Float:y, Float:z;
GetVehiclePos(cID, x, y, z);
for(new i=0; i<MAX_VEHICLES; i++)
{
if(!IsVehicleStreamedIn(i, playerid))continue;
if(i==cID)continue;
if(GetVehicleDistanceFromPoint(i, x, y, z) < abstand)
{
abstand = GetVehicleDistanceFromPoint(i, x, y, z);
carID = i;
}
}
if(carID != INVALID_VEHICLE_ID)
{
AttachTrailerToVehicle(carID, cID);
}
}
} -
Funktioneirt auch nicht, danke trotzdem. Jedoch funktioniert es wenn ich mir nen Befehl mach und diesen auf ne Taste leg.
-
Check mal crashdetect und pack n print mal rein, ob das aufgerufen wird
-
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.
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); }}
-
-
Hallo!
Wie mache ich einen Befehl damit ich meine FPS ingame rausfinde?
Am besten sofern mögich nur /fps ohne einer ID.Codeocmd:fps(playerid,params[]) { new TargetID, pFPS,string[128]; if(sscanf(params, "u", TargetID))SendClientMessage(playerid, ROT, "USAGE: /fps (nick/id) - Enter a valid Nick / ID"); format(string, sizeof(string), "Fps is: %d",pFPS); SendClientMessage(playerid, WEISS, string); return 1; }
Der hier funktioneiert nicht wirklich, da ist FPS immer 0.
Danke im Voraus
MfG
-
Du fragst ja nirgend die FPS vom Spieler ab.
stock GetPlayerFPS(playerid)
{
SetPVarInt(playerid, "DrunkL", GetPlayerDrunkLevel(playerid));
if(GetPVarInt(playerid, "DrunkL") < 100) SetPlayerDrunkLevel(playerid, 2000);
else{
if(GetPVarInt(playerid, "LDrunkL") != GetPVarInt(playerid, "DrunkL"))
{
SetPVarInt(playerid, "FPS", (GetPVarInt(playerid, "LDrunkL") - GetPVarInt(playerid, "DrunkL")));
SetPVarInt(playerid, "LDrunkL", GetPVarInt(playerid, "DrunkL"));
if((GetPVarInt(playerid, "FPS") > 0) && (GetPVarInt(playerid, "FPS") < 256))
{
return GetPVarInt(playerid, "FPS") - 1;
}
}
}
return 0;
} -
C
Alles anzeigenpublic LoadPlayerVehicles(playerid, slot) { new result[25], rows, fields; cache_get_data(rows, fields); if(rows) { cache_get_field_content(0, "vehBesitzer", result); format(PrivateVehicle[playerid][slot][vehBesitzer], 25, result); PrivateVehicle[playerid][slot][modelid] = cache_get_field_content_int(0, "modelid"); PrivateVehicle[playerid][slot][vehPosX] = cache_get_field_content_float(0, "vehPosX"); PrivateVehicle[playerid][slot][vehPosY] = cache_get_field_content_float(0, "vehPosY"); PrivateVehicle[playerid][slot][vehPosZ] = cache_get_field_content_float(0, "vehPosZ"); PrivateVehicle[playerid][slot][vehPosA] = cache_get_field_content_float(0, "vehPosA"); PrivateVehicle[playerid][slot][vehHealth] = cache_get_field_content_float(0, "vehHealth"); PrivateVehicle[playerid][slot][vehColor1] = cache_get_field_content_int(0, "vehColor1"); PrivateVehicle[playerid][slot][vehColor2] = cache_get_field_content_int(0, "vehColor2"); PrivateVehicle[playerid][slot][vehPaintjob] = cache_get_field_content_int(0, "vehPaintjob"); PrivateVehicle[playerid][slot][vehSpoiler] = cache_get_field_content_int(0, "vehSpoiler"); PrivateVehicle[playerid][slot][vehHood] = cache_get_field_content_int(0, "vehHood"); PrivateVehicle[playerid][slot][vehRoof] = cache_get_field_content_int(0, "vehRoof"); PrivateVehicle[playerid][slot][vehSideskirt] = cache_get_field_content_int(0, "vehSideskirt"); PrivateVehicle[playerid][slot][vehLamps] = cache_get_field_content_int(0, "vehLamps"); PrivateVehicle[playerid][slot][vehNitro] = cache_get_field_content_int(0, "vehNitro"); PrivateVehicle[playerid][slot][vehExhaust] = cache_get_field_content_int(0, "vehExhaust"); PrivateVehicle[playerid][slot][vehWheels] = cache_get_field_content_int(0, "vehWheels"); PrivateVehicle[playerid][slot][vehStereo] = cache_get_field_content_int(0, "vehStereo"); PrivateVehicle[playerid][slot][vehHydraulics] = cache_get_field_content_int(0, "vehHydraulics"); PrivateVehicle[playerid][slot][vehFrontBumper] = cache_get_field_content_int(0, "vehFrontBumper"); PrivateVehicle[playerid][slot][vehRearBumper] = cache_get_field_content_int(0, "vehRearBumper"); PrivateVehicle[playerid][slot][vehVentRight] = cache_get_field_content_int(0, "vehVentRight"); PrivateVehicle[playerid][slot][vehVentLeft] = cache_get_field_content_int(0, "vehVentLeft"); PrivateVehicle[playerid][slot][vehPreis] = cache_get_field_content_int(0, "vehPreis"); PrivateVehicle[playerid][slot][vehNeonID] = cache_get_field_content_int(0, "vehNeonID"); cache_get_field_content(0, "vehNumberPlate", PrivateVehicle[playerid][slot][vehNumberPlate], MySqlConnection, 32); PrivateVehicle[playerid][slot][vehID] = CreateVehicleEx(PrivateVehicle[playerid][slot][modelid], PrivateVehicle[playerid][slot][vehPosX], PrivateVehicle[playerid][slot][vehPosY], PrivateVehicle[playerid][slot][vehPosZ], PrivateVehicle[playerid][slot][vehPosA], PrivateVehicle[playerid][slot][vehColor1], PrivateVehicle[playerid][slot][vehColor2], -1, false, 0); PrivateVehicle[playerid][slot][vehAbgeschleppt] = cache_get_field_content_int(0, "vehAbgeschleppt"); cache_get_field_content(0, "vehAbgeschlepptVon", PrivateVehicle[playerid][slot][vehAbgeschlepptVon], MySqlConnection, 32); PrivateVehicle[playerid][slot][vehKaution] = cache_get_field_content_int(0, "vehKaution"); PrivateVehicle[playerid][slot][vehMaterialien] = cache_get_field_content_int(0, "vehMaterialien"); PrivateVehicle[playerid][slot][vehDrogen] = cache_get_field_content_int(0, "vehDrogen"); PrivateVehicle[playerid][slot][vehAKRounds] = cache_get_field_content_int(0, "vehAKRounds"); PrivateVehicle[playerid][slot][vehM4Rounds] = cache_get_field_content_int(0, "vehM4Rounds"); PrivateVehicle[playerid][slot][vehSniperRounds] = cache_get_field_content_int(0, "vehSniperRounds"); PrivateVehicle[playerid][slot][vehDeagleRounds] = cache_get_field_content_int(0, "vehDeagleRounds"); PrivateVehicle[playerid][slot][vehMP5Rounds] = cache_get_field_content_int(0, "vehMP5Rounds"); PrivateVehicle[playerid][slot][vehShotgunRounds] = cache_get_field_content_int(0, "vehShotgunRounds"); PrivateVehicle[playerid][slot][vehFahrgestell] = cache_get_field_content_int(0, "vehFahrgestell"); PrivateVehicle[playerid][slot][vehKofferraumC4] = cache_get_field_content_int(0, "vehKofferraumC4"); Vehicle[PrivateVehicle[playerid][slot][vehID]][vehFuel] = cache_get_field_content_float(0, "vehFuel"); Vehicle[PrivateVehicle[playerid][slot][vehID]][vehKMStand] = cache_get_field_content_float(0, "vehKMStand"); PrivateVehicle[playerid][slot][vehInterior] = cache_get_field_content_int(0, "vehInterior"); PrivateVehicle[playerid][slot][vehWorld] = cache_get_field_content_int(0, "vehWorld"); VehicleTuning(playerid, slot); } return 1; }
Hey,
Kurze Frage,
Egal wie ich es mache wen ich die Fahrzeuge Abgeschleppt sind sollten die nicht erstellt werden.
Komisch ist in der DB ist alles richtig wen ich es dann so ein stelle spawn die Fahrzeuge alle mit 0 Tank auch die nicht abgeschleppt sind :o?Die Abfrage ist:
if(PrivateVehicle[playerid][slot][vehAbgeschleppt] == 0) //Bedeutet das Fahrzeug ist nicht abgeschleppt.
if(PrivateVehicle[playerid][slot][vehAbgeschleppt] == 1) //Bedeutet das Fahrzeug ist abgeschleppt.//E:
Wen der Spieler das Fahrzeug freikäuft.
C
Alles anzeigencase DIALOG_VERWAHRSTELLE: { if(response) { for(new i=0;i<GetMaxPlayers();i++) { new slot = GetPVarInt(playerid, "carkey"); if(PrivateVehicle[playerid][slot][vehAbgeschleppt] == 1) { if(GetMoney(playerid) > PrivateVehicle[playerid][slot][vehKaution]) { PrivateVehicle[playerid][slot][vehKaution] = 0; PrivateVehicle[playerid][slot][vehAbgeschleppt] = 0; strdel(PrivateVehicle[playerid][slot][vehAbgeschlepptVon], 0, MAX_PLAYER_NAME); SendClientMessage(playerid, COLOR_WHITE, "{33CCFF}Du hast die Kaution für dein Fahrzeug bezahlt. Das Fahrzeug befindet sich nun an der Ausfahrt."); SendClientMessage(playerid, COLOR_WHITE, "{33CCFF}Du musst dein Fahrzeug neu Parken, ansonsten Spawnt es an der Verwahrstelle."); GiveMoney(playerid, -Vehicle[PrivateVehicle[playerid][slot][vehID]][vehKaution]); Frak[6][frakKasse] += Vehicle[PrivateVehicle[playerid][slot][vehID]][vehKaution]; new tempOccupied = sizeof(OccupiedSpawns); tempOccupied = random(tempOccupied); PrivateVehicle[playerid][slot][vehPosX] = OccupiedSpawns[tempOccupied][0]; PrivateVehicle[playerid][slot][vehPosY] = OccupiedSpawns[tempOccupied][1]; PrivateVehicle[playerid][slot][vehPosZ] = OccupiedSpawns[tempOccupied][2]; PrivateVehicle[playerid][slot][vehPosA] = OccupiedSpawns[tempOccupied][3]; PrivateVehicle[playerid][slot][vehID] = CreateVehicleEx(PrivateVehicle[playerid][slot][modelid], PrivateVehicle[playerid][slot][vehPosX], PrivateVehicle[playerid][slot][vehPosY], PrivateVehicle[playerid][slot][vehPosZ], PrivateVehicle[playerid][slot][vehPosA], PrivateVehicle[playerid][slot][vehColor1], PrivateVehicle[playerid][slot][vehColor2], -1, false, 0); VehicleTuning(playerid, slot); } } } } }
-
Egal wie ich es mache wen ich die Fahrzeuge Abgeschleppt sind sollten die nicht erstellt werden.
Du fragst ja nirgends ab, ob es abgeschleppt wurde oder nicht.
C
Alles anzeigenpublic LoadPlayerVehicles(playerid, slot) { new result[25], rows, fields; cache_get_data(rows, fields); if(rows) { cache_get_field_content(0, "vehBesitzer", result); format(PrivateVehicle[playerid][slot][vehBesitzer], 25, result); PrivateVehicle[playerid][slot][modelid] = cache_get_field_content_int(0, "modelid"); PrivateVehicle[playerid][slot][vehPosX] = cache_get_field_content_float(0, "vehPosX"); PrivateVehicle[playerid][slot][vehPosY] = cache_get_field_content_float(0, "vehPosY"); PrivateVehicle[playerid][slot][vehPosZ] = cache_get_field_content_float(0, "vehPosZ"); PrivateVehicle[playerid][slot][vehPosA] = cache_get_field_content_float(0, "vehPosA"); PrivateVehicle[playerid][slot][vehHealth] = cache_get_field_content_float(0, "vehHealth"); PrivateVehicle[playerid][slot][vehColor1] = cache_get_field_content_int(0, "vehColor1"); PrivateVehicle[playerid][slot][vehColor2] = cache_get_field_content_int(0, "vehColor2"); PrivateVehicle[playerid][slot][vehPaintjob] = cache_get_field_content_int(0, "vehPaintjob"); PrivateVehicle[playerid][slot][vehSpoiler] = cache_get_field_content_int(0, "vehSpoiler"); PrivateVehicle[playerid][slot][vehHood] = cache_get_field_content_int(0, "vehHood"); PrivateVehicle[playerid][slot][vehRoof] = cache_get_field_content_int(0, "vehRoof"); PrivateVehicle[playerid][slot][vehSideskirt] = cache_get_field_content_int(0, "vehSideskirt"); PrivateVehicle[playerid][slot][vehLamps] = cache_get_field_content_int(0, "vehLamps"); PrivateVehicle[playerid][slot][vehNitro] = cache_get_field_content_int(0, "vehNitro"); PrivateVehicle[playerid][slot][vehExhaust] = cache_get_field_content_int(0, "vehExhaust"); PrivateVehicle[playerid][slot][vehWheels] = cache_get_field_content_int(0, "vehWheels"); PrivateVehicle[playerid][slot][vehStereo] = cache_get_field_content_int(0, "vehStereo"); PrivateVehicle[playerid][slot][vehHydraulics] = cache_get_field_content_int(0, "vehHydraulics"); PrivateVehicle[playerid][slot][vehFrontBumper] = cache_get_field_content_int(0, "vehFrontBumper"); PrivateVehicle[playerid][slot][vehRearBumper] = cache_get_field_content_int(0, "vehRearBumper"); PrivateVehicle[playerid][slot][vehVentRight] = cache_get_field_content_int(0, "vehVentRight"); PrivateVehicle[playerid][slot][vehVentLeft] = cache_get_field_content_int(0, "vehVentLeft"); PrivateVehicle[playerid][slot][vehPreis] = cache_get_field_content_int(0, "vehPreis"); PrivateVehicle[playerid][slot][vehNeonID] = cache_get_field_content_int(0, "vehNeonID"); cache_get_field_content(0, "vehNumberPlate", PrivateVehicle[playerid][slot][vehNumberPlate], MySqlConnection, 32); PrivateVehicle[playerid][slot][vehAbgeschleppt] = cache_get_field_content_int(0, "vehAbgeschleppt"); cache_get_field_content(0, "vehAbgeschlepptVon", PrivateVehicle[playerid][slot][vehAbgeschlepptVon], MySqlConnection, 32); PrivateVehicle[playerid][slot][vehKaution] = cache_get_field_content_int(0, "vehKaution"); PrivateVehicle[playerid][slot][vehMaterialien] = cache_get_field_content_int(0, "vehMaterialien"); PrivateVehicle[playerid][slot][vehDrogen] = cache_get_field_content_int(0, "vehDrogen"); PrivateVehicle[playerid][slot][vehAKRounds] = cache_get_field_content_int(0, "vehAKRounds"); PrivateVehicle[playerid][slot][vehM4Rounds] = cache_get_field_content_int(0, "vehM4Rounds"); PrivateVehicle[playerid][slot][vehSniperRounds] = cache_get_field_content_int(0, "vehSniperRounds"); PrivateVehicle[playerid][slot][vehDeagleRounds] = cache_get_field_content_int(0, "vehDeagleRounds"); PrivateVehicle[playerid][slot][vehMP5Rounds] = cache_get_field_content_int(0, "vehMP5Rounds"); PrivateVehicle[playerid][slot][vehShotgunRounds] = cache_get_field_content_int(0, "vehShotgunRounds"); PrivateVehicle[playerid][slot][vehFahrgestell] = cache_get_field_content_int(0, "vehFahrgestell"); PrivateVehicle[playerid][slot][vehKofferraumC4] = cache_get_field_content_int(0, "vehKofferraumC4"); Vehicle[PrivateVehicle[playerid][slot][vehID]][vehFuel] = cache_get_field_content_float(0, "vehFuel"); Vehicle[PrivateVehicle[playerid][slot][vehID]][vehKMStand] = cache_get_field_content_float(0, "vehKMStand"); PrivateVehicle[playerid][slot][vehInterior] = cache_get_field_content_int(0, "vehInterior"); PrivateVehicle[playerid][slot][vehWorld] = cache_get_field_content_int(0, "vehWorld"); if(!PrivateVehicle[playerid][slot][vehAbgeschleppt]) { PrivateVehicle[playerid][slot][vehID] = CreateVehicleEx(PrivateVehicle[playerid][slot][modelid], PrivateVehicle[playerid][slot][vehPosX], PrivateVehicle[playerid][slot][vehPosY], PrivateVehicle[playerid][slot][vehPosZ], PrivateVehicle[playerid][slot][vehPosA], PrivateVehicle[playerid][slot][vehColor1], PrivateVehicle[playerid][slot][vehColor2], -1, false, 0); VehicleTuning(playerid, slot); } } return 1; }
Und die Virtuelle Welt und das Interior von dem Fahrzeug speichern, ist vllt nicht nötig, aber wenn, dann musst du es auch irgendwo setzen, das tust du nämlich gar nicht
-
Tatsächlich schon, habe dafür extra ein Garagen System erstellt
Vielen Lieben Dank @Kaliber
Kurze frage noch habe nun das auch für die Fraktions Fahrzeuge mit eingebunden das die auch abgeschleppt werden könn.
Die frage ist nur wie ich das am besten abwickele mit den Freikaufen.
Es sollte halt ein dialog aufgehn welche Fahrzeuge abgeschleppt sind. Wen keine Abgeschleppt sind sollte einfach kommen
Es wurde kein Fahrzeug Abgeschleppt.Natürlich Fraktion Abhänig.
C
Alles anzeigenocmd:opark(playerid, params[]) { new Geld; new vehicleid = GetVehicleTrailer(GetPlayerVehicleID(playerid)); if(Spieler[playerid][pFraktion] != 6)return SendClientMessage(playerid, COLOR_WHITE, ERROR_FRAKTION); if(GetVehicleModel(GetPlayerVehicleID(playerid)) != 525)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Du bist in keinem Abschlepper"); if(sscanf(params, "d", Geld))return SendClientMessage(playerid, COLOR_WHITE, "{3592D7}* Benutze {00CC00}/opark [Kaution]"); if(vehicleid == INVALID_VEHICLE_ID)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Du hast kein Fahrzeug am Hacken."); if(IsPlayerInRangeOfPoint(playerid, 10.0, 2259.1782, 2037.8052, 10.6974)) { if(!(IsAFraktionsVeh(vehicleid) == INVALID_VEHICLE_ID)) { if(IsValidVehicle(vehicleid)) { new fV = IsAFraktionsVeh(vehicleid), VehicleID, string[128]; VehicleID = GetPlayerVehicleID(playerid); new occupiedCarID = GetVehicleTrailer(VehicleID); fVehicle[fV][vehAbgeschleppt] = 1; format(fVehicle[fV][vehAbgeschlepptVon], MAX_PLAYER_NAME, "%s", GetName(playerid)); fVehicle[fV][vehKaution] = Geld; DestroyVehicle(occupiedCarID); format(string, sizeof(string), "{F3FF02}Du hast den %s erfolgreich abgeschleppt und erhältst am nächsten Payday 3000$. Kaution: %d$", VehicleName[fVehicle[fV][modelid]-400], Geld); SendClientMessage(playerid, COLOR_WHITE, string); Spieler[playerid][pJobMoney] += 3000; Frak[6][frakKasse] = Geld; return 1; } } for(new slot = 0;slot<MAX_PLAYER_VEHICLES;slot++) { for(new i=0;i<GetMaxPlayers();i++) { if(IsValidVehicle(PrivateVehicle[i][slot][vehID])) { if(vehicleid == PrivateVehicle[i][slot][vehID]) { new VehicleID, string[128]; VehicleID = GetPlayerVehicleID(playerid); new occupiedCarID = GetVehicleTrailer(VehicleID); PrivateVehicle[playerid][slot][vehAbgeschleppt] = 1; format(PrivateVehicle[playerid][slot][vehAbgeschlepptVon], MAX_PLAYER_NAME, "%s", GetName(playerid)); PrivateVehicle[playerid][slot][vehKaution] = Geld; DestroyVehicle(occupiedCarID); format(string, sizeof(string), "{F3FF02}Du hast den %s erfolgreich abgeschleppt und erhältst am nächsten Payday 3000$. Kaution: %d$", VehicleName[PrivateVehicle[playerid][slot][modelid]-400], Geld); SendClientMessage(playerid, COLOR_WHITE, string); Spieler[playerid][pJobMoney] += 3000; Frak[6][frakKasse] = Geld; return 1; } } } } } return 1; }
//E:
Habe mich nun drann gesetzt einen Dialog zu machen welche Fahrzeuge der Fraktion abgeschleppt sind:
C
Alles anzeigenocmd:freefrakcar(playerid, params[]) { new vehicleid = GetPlayerVehicleID(playerid); if(IsPlayerInRangeOfPoint(playerid, 5.0, 2262.1243, 2042.5981, 10.8203)) { new count = 0; new string[1550] = "Fahrzeug\tAbschlepper\tKaution"; for(new fV;fV<MAX_FVEHS;fV++) { if(!(IsAFraktionsVeh(vehicleid) == INVALID_VEHICLE_ID)) { if(Spieler[playerid][pFraktion] == fVehicle[fV][vehFraktion]) { if(fVehicle[fV][vehAbgeschleppt] == 1) { format(string, sizeof(string), "%s\n%s\t%s\t%d$", string, VehicleName[fVehicle[fV][modelid]-400], fVehicle[fV][vehAbgeschlepptVon], fVehicle[fV][vehKaution]); ShowPlayerDialog(playerid, DIALOG_VERWAHRSTELLE_FV, DIALOG_STYLE_TABLIST_HEADERS, "Verwahrstelle", string, "Auswählen","Schließen"); count++; } } } } return 1; } return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Du befindest dich nicht bei der Verwahrstelle."); }