Warum kommt der User nicht ausm Knast raus und wie scripte ich das man ID angeben muss.
if(strcmp("/arrest", cmd, true) == 0)
{
if(IsPlayerConnected(playerid))
{
if(IsACop(playerid))
{
if(OnDuty[playerid] != 1)
{
SendClientMessage(playerid, COLOR_ERRORTEXT, " Du bist nicht im Dienst!");
return 1;
}
if(PlayerToPoint(6.0, playerid, 198.1741,158.6524,1003.0234) || PlayerToPoint(6.0, playerid, 268.5258,77.6269,1001.0391) || PlayerToPoint(6.0, playerid, 268.4561,84.9885,1001.0391) || PlayerToPoint(6.0, playerid, 321.8767,314.1259,999.1484))
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_BENUTZETEXT, "Benutze: /arrest [Preis] [Kaution (0=Nein 1=Ja)] [Kautionspreis]");
return 1;
}
moneys = strval(tmp);
if(moneys < 1 || moneys > 200000) { SendClientMessage(playerid, COLOR_ERRORTEXT, " Gefängnispreis kann nur zwischen $1 und $200000 liegen!"); return 1; }
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_BENUTZETEXT, "Benutze: /arrest [Preis] [Kaution (0=Nein 1=Ja)] [Kautionspreis]");
return 1;
}
new bail = strval(tmp);
if(bail < 0 || bail > 1) { SendClientMessage(playerid, COLOR_ERRORTEXT, " Kaution kann nur mit 0 oder 1 festgelegt werden!"); return 1; }
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_BENUTZETEXT, "Benutze: /arrest [Preis] [Kaution (0=Nein 1=Ja)] [Kautionspreis]");
return 1;
}
new bailprice = strval(tmp);
if(bailprice < 0 || bailprice > 100000000) { SendClientMessage(playerid, COLOR_ERRORTEXT, " Gefängnis Kaution kann nur zwischen $0 und $100.000.000 liegen!"); return 1; }
new suspect = GetClosestPlayer(playerid);
if(IsPlayerConnected(suspect))
{
if(GetDistanceBetweenPlayers(playerid,suspect) < 5)
{
GetPlayerName(suspect, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
if(PlayerInfo[suspect][pWantedLevel] < 1)
{
SendClientMessage(playerid, COLOR_ERRORTEXT, " Der Spieler muss mindestens Wanted Level 1 haben!");
return 1;
}
format(string, sizeof(string), "* Du hast %s eingesperrt!", giveplayer);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
new SteuerkasseMoney = moneys;
GivePlayerMoneys(playerid, moneys/2);
StuffInfo[sSteuerkasse] += SteuerkasseMoney/2;
StuffInfo[sEinnahmen] += SteuerkasseMoney/2;
format(string, sizeof(string), "Eingesperrt von %s ~n~fuer $%d", sendername, moneys);
GameTextForPlayer(suspect, string, 5000, 5);
ResetPlayerWeapon(suspect);
if(PlayerInfo[playerid][pMember] == 7 || PlayerInfo[playerid][pLeader] == 7)
{
format(string, sizeof(string), "<< FBI Agent %s hat den Verdächtigen %s eingesperrt >>", sendername, giveplayer);
SendClientMessageToAll(COLOR_LIGHTRED, string);
}
else if(PlayerInfo[playerid][pMember] == 14 || PlayerInfo[playerid][pLeader] == 14)
{
format(string, sizeof(string), "<< LSPD Officer %s hat den Verdächtigen %s eingesperrt >>", sendername, giveplayer);
SendClientMessageToAll(COLOR_LIGHTRED, string);
}
else if(PlayerInfo[playerid][pMember] == 16 || PlayerInfo[playerid][pLeader] == 16)
{
format(string, sizeof(string), "<< SFPD Officer %s hat den Verdächtigen %s eingesperrt >>", sendername, giveplayer);
SendClientMessageToAll(COLOR_LIGHTRED, string);
}
else if(PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pLeader] == 1)
{
format(string, sizeof(string), "<< LVPD Officer %s hat den Verdächtigen %s eingesperrt >>", sendername, giveplayer);
SendClientMessageToAll(COLOR_LIGHTRED, string);
}
if(PlayerToPoint(6.0, playerid, 198.1741,158.6524,1003.0234))
{
PlayerInfo[suspect][pJailed] = 1;
SetPlayerInterior(suspect, 3);
SetPlayerPos(suspect,198.8241,161.8588,1003.0300);
}
if(PlayerToPoint(6.0, playerid, 268.5258,77.6269,1001.0391) || PlayerToPoint(6.0, playerid, 268.4561,84.9885,1001.0391) || PlayerToPoint(6.0, playerid, 321.8767,314.1259,999.1484))
{
PlayerInfo[suspect][pJailed] = 3;
SetPlayerInterior(suspect, 6);
new zufall = random(3);
if(zufall == 1)
{
SetPlayerPos(suspect, 264.3521,82.2144,1001.0391);
}
else if(zufall == 2)
{
SetPlayerPos(suspect, 264.1788,86.7012,1001.0391);
}
else
{
SetPlayerPos(suspect, 264.7485,77.6824,1001.0391);
}
PlayerInfo[suspect][pLocal] = -1;
}
PlayerInfo[suspect][pJailTime] = PlayerInfo[suspect][pWantedLevel]* 3 * 60;
if(bail == 1)
{
JailPrice[suspect] = bailprice;
format(string, sizeof(string), "Du wurdest für %d Minuten eingesperrt. Kaution: $%d", PlayerInfo[suspect][pJailTime]/60, JailPrice[suspect]);
SendClientMessage(suspect, COLOR_LIGHTBLUE, string);
}
else
{
JailPrice[suspect] = 0;
format(string, sizeof(string), "Du wurdest für %d Minuten eingesperrt. Kaution: Unmöglich", PlayerInfo[suspect][pJailTime]/60);
SendClientMessage(suspect, COLOR_LIGHTBLUE, string);
}
SetPlayerFree(suspect, playerid, string, 0);
PlayerInfo[suspect][pArrested] += 1;
PlayerInfo[suspect][pWantedLevel] = 0;
WantLawyer[suspect] = 1;
format(string,sizeof(string),"%s hat den Verdächtigen %s eingesperrt", sendername, giveplayer);
EnterToLog("arrest",string);
}
}
else
{
SendClientMessage(playerid, COLOR_ERRORTEXT, " Niemand ist in deiner Nähe den du einsperren kannst !");
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_ERRORTEXT, " Du bist nicht in der Nähe der Zellen !");
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_ERRORTEXT, " Du bist kein Polizist / FBI Agent Soldier !");
return 1;
}
}
return 1;
}
[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
-
-
Ist es möglich, einen Code zu schreiben in dem man angeben kann wie lange man im Wasser tauchen kann oder eventuell unbegrenzt?
Falls ja, wie?
-
Ist es möglich, einen Code zu schreiben in dem man angeben kann wie lange man im Wasser tauchen kann oder eventuell unbegrenzt?
Nein, die Luft kannst du nicht verändern (warum weiß keiner...).
Das Einzige was du machen kannst ist dem Spieler unbegrenzt Leben zu geben. -
-
if(newkeys == 16 && GetPlayerState(playerid == PLAYER_STATE_ONFOOT))
Jetzt kann man mit leertaste etc. rein wie geht das ich nur mit Eingabe und F gehe?
-
Meinst du das Leben unbegrenzt Allgemein setzen oder dann wenn er nur unter Wasser ist?
Nur wenn er im Wasser ist, bzw taucht. Du kannst das über den Animations Index herausfinden.
Hier ein Beispiel:
http://forum.sa-mp.com/showthread.php?t=400049Und wenn er nicht mehr im Wasser ist, die Health wieder zurück setzen, wie es zuvor war (natürlich zuvor gespeichert haben).
-
Beitrag von Apokrate ()
Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar. -
Woran könnte es liegen, dass die Textdraws bei einem Restart langsam laden oder sich das Spiel aufhängt?
Kann es auch am Server liegen?
Da gibt es mehrere Möglichkeiten.Extrem schlechter Code der laggt.
MySQL Verbindung zu einer externen Datenbank die keine Rückmeldung gibt.
Schlechte CPU am Server (relativ unwahrscheinlich)Kann an allem möglichen liegen. Falls du Backups hast (wenn nicht rate ich es dir dringend von nun an mindestens ein mal am Tag zu machen!) prüfe, ob es dort auch ist. Wenn nicht, füge Stück für Stück deine Neuerungen wieder hinzu.
-
public OnPlayerDisconnect(playerid, reason)
{
new string[128];
new Spielerdatei[64];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
new interior = dini_Int(Spielerdatei,"Interior");
new vworld = dini_Int(Spielerdatei,"VWorld");
GetPlayerInterior(interior);
GetPlayerVirtualWorld(vworld);
return 1;
}public OnPlayerSpawn(playerid)
{
new Spielerdatei[64];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
new vworld = dini_Int(Spielerdatei,"VWorld");
SetPlayerInterior(playerid,interior);
SetPlayerVirtualWorld(playerid,vworld);
return 1;
}Die Position nach OnPlayerDisconnect wird nicht gespeichert.
Was ist unter OnPlayerSpawn oder Disconnect falsch? -
PStar:
public OnPlayerDisconnect(playerid, reason)
{
new string[128];
new Spielerdatei[64];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
new interior = GetPlayerInterior(interior);
new vworld = GetPlayerVirtualWorld(vworld);
dini_IntSet(Spielerdatei,"Interior", interior);
dini_IntSet(Spielerdatei,"VWorld", vworld);
return 1;
} -
-
PStar:
public OnPlayerDisconnect(playerid, reason)
{
new string[128];
new Spielerdatei[64];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
new interior = GetPlayerInterior(interior);
new vworld = GetPlayerVirtualWorld(vworld);
dini_IntSet(Spielerdatei,"Interior", interior);
dini_IntSet(Spielerdatei,"VWorld", vworld);
return 1;
}PStar:
public OnPlayerDisconnect(playerid, reason)
{
new string[128];
new Spielerdatei[64];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
new interior = GetPlayerInterior(interior);
new vworld = GetPlayerVirtualWorld(vworld);
dini_IntSet(Spielerdatei,"Interior", interior);
dini_IntSet(Spielerdatei,"VWorld", vworld);
return 1;
}Geht leider komischerweise trotzdem nicht Werte bleiben auf 0.
-
public OnPlayerDisconnect(playerid, reason)
{
new string[128];
new Spielerdatei[64];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
dini_IntSet(Spielerdatei,"Interior", GetPlayerInterior(interior));
dini_IntSet(Spielerdatei,"VWorld", GetPlayerVirtualWorld(vworld));
return 1;
}public OnPlayerSpawn(playerid)
{
new Spielerdatei[64];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
SetPlayerInterior(playerid, dini_Int(Spielerdatei,"Interior"));
SetPlayerVirtualWorld(playerid, dini_Int(Spielerdatei,"VWorld"));
return 1;
}Versuch es so.
Du bist aber schon in einem Interior und einer anderen VirtualWorld, oder? -
public OnPlayerDisconnect(playerid, reason)
{
new string[128];
new Spielerdatei[64];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
dini_IntSet(Spielerdatei,"Interior", GetPlayerInterior(interior));
dini_IntSet(Spielerdatei,"VWorld", GetPlayerVirtualWorld(vworld));
return 1;
}public OnPlayerSpawn(playerid)
{
new Spielerdatei[64];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
SetPlayerInterior(playerid, dini_Int(Spielerdatei,"Interior"));
SetPlayerVirtualWorld(playerid, dini_Int(Spielerdatei,"VWorld"));
return 1;
}Versuch es so.
Du bist aber schon in einem Interior und einer anderen VirtualWorld, oder?Jap bin ich, geht nicht.
Vielleicht wird die Speicherung durch SpielerSpeichern oder LoadAccount beeinträchtigt?
stock LoadAcoount(playerid)
{
new Spielerdatei[64],name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
SetPVarInt(playerid,"Interior",dini_Int(Spielerdatei,"Interior"));
SetPVarInt(playerid,"VWorld",dini_Int(Spielerdatei,"VWorld"));
return 1;
}stock SpielerSpeichern(playerid)
{
new name[MAX_PLAYER_NAME];
new Spielerdatei[64], datum[20], string[100];
new jahr, monat, tag, stunde, minute, sekunde;
GetPlayerName(playerid,name,sizeof(name));
if(GetPVarInt(playerid, "loggedin") == 1)
{
dini_IntSet(Spielerdatei,"Interior",GetPVarInt(playerid,"Interior"));
dini_IntSet(Spielerdatei,"VWorld",GetPVarInt(playerid,"VWorld"));
return 1;
}
} -
Das wird wohl so sein, da du das lädst und dann wieder speicherst, ohne den Wert zu ändern.
Mach das beim LoadAccount und SpielerSpeichern raus. -
Hab es so gemacht habe es dann geprintet.
Es wird nicht aufgerufen.
Print schaut folgendermaßen aus:
dini_IntSet(Spielerdatei,"Interior", interior); print("Das Teil wird aufgerufen!1");
dini_IntSet(Spielerdatei,"VWorld", vworld); print("Das Teil wird aufgerufen!2"); -
-
public OnPlayerDisconnect(playerid, reason)
{
new string[128];
new Spielerdatei[64];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
new interior = GetPlayerInterior(interior);
new vworld = GetPlayerVirtualWorld(vworld);
dini_IntSet(Spielerdatei,"Interior", interior); print("Das Teil wird aufgerufen!1");
dini_IntSet(Spielerdatei,"VWorld", vworld); print("Das Teil wird aufgerufen!2");
return 1;
} -
PStar: Warum speicherst du es unter OnPlayerDisconnect und in der Funktion "SpielerSpeichern"?
Einmal reicht doch vollkommenstock SpielerSpeichern(playerid){
new name[MAX_PLAYER_NAME],Spielerdatei[64], datum[20], string[100],jahr, monat, tag, stunde, minute, sekunde;
GetPlayerName(playerid,name,sizeof(name));
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
if(GetPVarInt(playerid, "loggedin")){
dini_IntSet(Spielerdatei,"Interior",GetPVarInt(playerid,"Interior"));
dini_IntSet(Spielerdatei,"VWorld",GetPVarInt(playerid,"VWorld"));
//Alles speichern
return 1;
}
return 1;
}public OnPlayerDisconnect(playerid, reason){
SpielerSpeichern(playerid);
return 1;
} -
Hey,
ich wollte mal etwas mit arrays arbeiten, und habe bemerkt das es nicht ganz so will wie ich.
Es kommt immer dieser fehler "error 018: initialization data exceeds declared size"
Was mache ich denn hier falsch, weil eigendlich sollte er mir ja nun den Namen vom 2. eingetragenen fahrzeug geben..
Spoiler anzeigen
//Anwendung
printf("%s",VehicleInfo[1][0]);Spoiler anzeigen //Deklarierung
new VehicleInfo[212][2] =
{
{"Landstalker",Diesel},
{"Bravura",Diesel},
{"Buffalo",Diesel},
{"Linerunner",Diesel},
{"Perrenial",Diesel},
{"Sentinel",Diesel},
{"Dumper",Diesel},
{"Firetruck",Diesel},
{"Trashmaster",Diesel},
{"Stretch",Diesel},
{"Manana",Diesel},
{"Infernus",Diesel},
{"Voodoo",Diesel},
{"Pony",Diesel},
{"Mule",Diesel},
{"Cheetah",Diesel},
{"Ambulance",Diesel},
{"Leviathan",Diesel},
{"Moonbeam",Diesel},
{"Esperanto",Diesel},
{"Taxi",Diesel},
{"Washington",Diesel},
{"Bobcat",Diesel},
{"Mr Whoopee",Diesel},
{"BF Injection",Diesel},
{"Hunter",Diesel},
{"Premier",Diesel},
{"Enforcer",Diesel},
{"Securicar",Diesel},
{"Banshee",Diesel},
{"Predator",Diesel},
{"Bus",Diesel},
{"Rhino",Diesel},
{"Barracks",Diesel},
{"Hotknife",Diesel},
{"Trailer 1",Diesel},
{"Previon",Diesel},
{"Coach",Diesel},
{"Cabbie",Diesel},
{"Stallion",Diesel},
{"Rumpo",Diesel},
{"RC Bandit",Diesel},
{"Romero",Diesel},
{"Packer",Diesel},
{"Monster",Diesel},
{"Admiral",Diesel},
{"Squalo",Diesel},
{"Seasparrow",Diesel},
{"Pizzaboy",Diesel},
{"Tram",Diesel},
{"Trailer 2",Diesel},
{"Turismo",Diesel},
{"Speeder",Diesel},
{"Reefer",Diesel},
{"Tropic",Diesel},
{"Flatbed",Diesel},
{"Yankee",Diesel},
{"Caddy",Diesel},
{"Solair",Diesel},
{"Berkley's RC Van",Diesel},
{"Skimmer",Diesel},
{"PCJ-600",Diesel},
{"Faggio",Diesel},
{"Freeway",Diesel},
{"RC Baron",Diesel},
{"RC Raider",Diesel},
{"Glendale",Diesel},
{"Oceanic",Diesel},
{"Sanchez",Diesel},
{"Sparrow",Diesel},
{"Patriot",Diesel},
{"Quad",Diesel},
{"Coastguard",Diesel},
{"Dinghy",Diesel},
{"Hermes",Diesel},
{"Sabre",Diesel},
{"Rustler",Diesel},
{"ZR-350",Diesel},
{"Walton",Diesel},
{"Regina",Diesel},
{"Comet",Diesel},
{"BMX",Diesel},
{"Burrito",Diesel},
{"Camper",Diesel},
{"Marquis",Diesel},
{"Baggage",Diesel},
{"Dozer",Diesel},
{"Maverick",Diesel},
{"News Chopper",Diesel},
{"Rancher",Diesel},
{"FBI Rancher",Diesel},
{"Virgo",Diesel},
{"Greenwood",Diesel},
{"Jetmax",Diesel},
{"Hotring",Diesel},
{"Sandking",Diesel},
{"Blista Compact",Diesel},
{"Police Maverick",Diesel},
{"Boxville",Diesel},
{"Benson",Diesel},
{"Mesa",Diesel},
{"RC Goblin",Diesel},
{"Hotring Racer A",Diesel},
{"Hotring Racer B",Diesel},
{"Bloodring Banger",Diesel},
{"Rancher",Diesel},
{"Super GT",Diesel},
{"Elegant",Diesel},
{"Journey",Diesel},
{"Bike",Diesel},
{"Mountain Bike",Diesel},
{"Beagle",Diesel},
{"Cropdust",Diesel},
{"Stunt",Diesel},
{"Tanker",Diesel},
{"Roadtrain",Diesel},
{"Nebula",Diesel},
{"Majestic",Diesel},
{"Buccaneer",Diesel},
{"Shamal",Diesel},
{"Hydra",Diesel},
{"FCR-900",Diesel},
{"NRG-500",Diesel},
{"HPV1000",Diesel},
{"Cement Truck",Diesel},
{"Tow Truck",Diesel},
{"Fortune",Diesel},
{"Cadrona",Diesel},
{"FBI Truck",Diesel},
{"Willard",Diesel},
{"Forklift",Diesel},
{"Tractor",Diesel},
{"Combine",Diesel},
{"Feltzer",Diesel},
{"Remington",Diesel},
{"Slamvan",Diesel},
{"Blade",Diesel},
{"Freight",Diesel},
{"Streak",Diesel},
{"Vortex",Diesel},
{"Vincent",Diesel},
{"Bullet",Diesel},
{"Clover",Diesel},
{"Sadler",Diesel},
{"Firetruck LA",Diesel},
{"Hustler",Diesel},
{"Intruder",Diesel},
{"Primo",Diesel},
{"Cargobob",Diesel},
{"Tampa",Diesel},
{"Sunrise",Diesel},
{"Merit",Diesel},
{"Utility",Diesel},
{"Nevada",Diesel},
{"Yosemite",Diesel},
{"Windsor",Diesel},
{"Monster A",Diesel},
{"Monster B",Diesel},
{"Uranus",Diesel},
{"Jester",Diesel},
{"Sultan",Diesel},
{"Stratum",Diesel},
{"Elegy",Diesel},
{"Raindance",Diesel},
{"RC Tiger",Diesel},
{"Flash",Diesel},
{"Tahoma",Diesel},
{"Savanna",Diesel},
{"Bandito",Diesel},
{"Freight Flat",Diesel},
{"Streak Carriage",Diesel},
{"Kart",Diesel},
{"Mower",Diesel},
{"Duneride",Diesel},
{"Sweeper",Diesel},
{"Broadway",Diesel},
{"Tornado",Diesel},
{"AT-400",Diesel},
{"DFT-30",Diesel},
{"Huntley",Diesel},
{"Stafford",Diesel},
{"BF-400",Diesel},
{"Newsvan",Diesel},
{"Tug",Diesel},
{"Trailer 3",Diesel},
{"Emperor",Diesel},
{"Wayfarer",Diesel},
{"Euros",Diesel},
{"Hotdog",Diesel},
{"Club",Diesel},
{"Freight Carriage",Diesel},
{"Trailer 3",Diesel},
{"Andromada",Diesel},
{"Dodo",Diesel},
{"RC Cam",Diesel},
{"Launch",Diesel},
{"Police Car (LSPD)",Diesel},
{"Police Car (SFPD)",Diesel},
{"Police Car (LVPD)",Diesel},
{"Police Ranger",Diesel},
{"Picador",Diesel},
{"S.W.A.T. Van",Diesel},
{"Alpha",Diesel},
{"Phoenix",Diesel},
{"Glendale",Diesel},
{"Sadler",Diesel},
{"Luggage Trailer A",Diesel},
{"Luggage Trailer B",Diesel},
{"Stair Trailer",Diesel},
{"Boxville",Diesel},
{"Farm Plow",Diesel},
{"Utility Trailer",Diesel}
};
-
new VehicleInfo[212][2] =
zu:
enum vehEnum {
vehName[16],
kraftstoff
};
new VehicleInfo[212][vehEnum] =Ausgabe:
printf("%s",VehicleInfo[1][vehName]);