Biz[i][bLock] = !Biz[i][bLock];//Bleibt unverändert?!
Um das ganze zu einem bool zu konvertieren benutzt man zwei Ausrufezeichen
Biz[i][bLock] = !!Biz[i][bLock];
Biz[i][bLock] = !Biz[i][bLock];//Bleibt unverändert?!
Um das ganze zu einem bool zu konvertieren benutzt man zwei Ausrufezeichen
Biz[i][bLock] = !!Biz[i][bLock];
Ja liegt es auch.
Aber ich möchte es nicht umschreiben, deswegen ... irgendwie anders möglich?
-> bin nur kurz da.
Das liegt daran das -1 zurück geben wird. greift man auf ein array mit einem negativen index zu so crasht der Server.
ocmd:oparkt(playerid,params[]){
new veh = GetPlayerVehicleID(playerid),oapreis;
if(!IsPlayerInRangeOfPoint(playerid,150.0,907.2166,-1235.2578,0.9116)) return SendClientMessage(playerid,-1,"Du bist nicht in der O-Amt Base!");
if(GetVehicleModel(veh) != 525)return SendClientMessage(playerid,-1," Du musst in einem Abschleppwagen sitzen!");
new id = getSlotID(GetVehicleTrailer(veh));
if(id == -1)return SendClientMessage(playerid, -1, "Dieses Fahrzeug ist kein Spielerfahrzeug.");
if(sscanf(params,"i",oapreis)) return SendClientMessage(playerid,-1,"Verwende: /opark [Preis]");
if(sCarInfo[id][CarAbgeschleppt] == 0){
GetVehiclePos(id,sCarInfo[id][pCarPos_X],sCarInfo[id][pCarPos_Y],sCarInfo[id][pCarPos_Z]);
GetVehicleZAngle(id,sCarInfo[id][pCarPos_A]);
sCarInfo[id][CarAbgeschleppt] = 1;
sCarInfo[id][CarAbgeschlepptPreis] = oapreis;
tuneCar(id,sCarInfo[id][VehID]);
saveCar(id);
SendClientMessage(ReturnPlayerid(sCarInfo[id][scName]),-1,"Hinweis: Dein Auto/Bike wurde abgeschleppt! Hole es beim Ordnungsamt ab!");
}
return 1;
}
Warum nutzt man in Zeiten von SII , y_ini oder DJson noch DINI ?
Mal nur so nebenbei, wenn ich sowas wieder sehen
new win[MAX_RACECARS] = -1;
da könnte ich auf meine Tastatur kotzen.
Das funktioniert nicht du setzst lediglich den ersten index, daher initalisiert man das arrays auch anders.
new win[MAX_RACECARS] = {-1,...};
Ich war selbst 6 lange Jahre auf einer Hauotschule, musste (tut mir Leid, das zu sagen, aber es ist leider Fakt) mich ständig mit solchen Azzlacks abgeben, die meinten, sie wären die Obercoolsten , weil es einfach kaum möglich war, normale Leute zu finden.
Also meine Werdegang hat mich über die Hauptschule , Realschule bis jetzt zum Gymnasium geführt und ich kann dir versichern, dass es überall Idioten(Azzlacks) gibt, jedoch haben wir eine prozentual Abnahme je höher der Bildungsgrad ist.
Ich hoffe das einer mir helfen kann..
enum sData{
sID,
gID,
}
new SperrZone[MAX_PLAYERS][sData];
CMD->zone(playerid,params[])
{
if(SperrZone[playerid][sID]){
DestroyDynamicArea(SperrZone[playerid][sID]);
GangZoneDestroy(SperrZone[playerid][gID]);
for(new i; i != _:sData; ++i)SperrZone[playerid][sData:i] = 0;
return 1;
}
new Float:Pos[3];
GetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]);
SperrZone[playerid][sID] = CreateDynamicRectangle(Pos[0]-60, Pos[1]-60, Pos[0]+60, Pos[1]+60);
SperrZone[playerid][gID] = GangZoneCreate(Pos[0]-60, Pos[1]-60, Pos[0]+60, Pos[1]+60);
GangZoneShowForAll(SperrZone[playerid][gID],0xFFFF0096);
GangZoneFlashForAll(SperrZone[playerid][gID],0xAA333396);
return 1;
}
public OnPlayerEnterDynamicArea(playerid, areaid)
{
for(new i; i!= MAX_PLAYERS; ++i)if(areaid == SperrZone[i][sID])return SendClientMessage(playerid,-1,"Das ist eine Sperrzone!");
}
Den CMD Prozessor musst du noch anpassen so würde das funktionieren was du dazu benötigst ist das streamer plugin für mehr zonen funktionen des streamer plugin schau einfach mal auf die Seite http://forum.sa-mp.com/showthread.php?t=102865.
letztendlich musst du halt die id der zonen der vom streamer und der gangzone zwischenspeichern um das auch wieder zu löschen, wenn der Cop das ganze deaktivieren möchte. Das Callback OnPlayerEnterDynamicArea wird automatisch aufgerufen wenn der Spieler die Zone , welche mit CreateDynamicRectangle erstellt wurde
aufgerufen so sparst du dir einen Timer.
1680 Objekte bei solch einer Map ist durchaus machbar
das Problem ist das ihr einfach nicht wisst wie man mit dem streamer richtig umgeht.
Ich hab meine Stadthalle releast auch diese konnte ich ohne probleme einstreamen vllt an paar punkten nicht ganz, aber der größte Teil schon.
Die Zauberworte sind drawdistance und streamdistanc.
Dann benötigst du noch die modelsize include von Y_Less
und hookst CreateDynamicObject.
Das Geheimnis daran ist die streamdistance je nach priorität zu setzen sodass stühle und tische etc... (details) erst
sehr nah eingestreamt werden.
mehr oder weniger ja, jedoch ist das nur mit Kopfbedeckungen und Brillen möglich , extra kleider gibt es jedoch nicht.
@ Jeffry
Er wollte die Skins so anziehen, wie es im Singleplayer mit CJ möglich ist.
Du könntest auch ein Handysystem schreiben
Beispiel für ein Handy
=>
=>
http://forum.sa-mp.com/showthread.php?t=247612
Man könnte über die Audiodatei vom Googleübersetzer auch den Namen vorlesen lassen , welcher anruft etc... .
Falls du dazu lust hast kann ich dir gerne noch paar weitere Ideen, als die in den Video gezeigen Features nennen.
Aber getSlotID ist doch eigentlich 0, wenn er in keinem Fahrzeug sitzt.
Er nimmt ja die GetPlayerVehicleID und wenn er in keinen Car sitzt -> 0.
Natürlich kann man auch GetPlayerVehicleID nutzen macht im gesamten System nicht wirklich sinn da getSlotID dir nur die Slotid ausspuckt
wenn das Fahrzeug auch dir gehört, nun gut da fehlt in diesem Beispiel nur die Abfrage ob die Slotid -1 ist.
//edit im grunde muss man nur 2 Sachen ändern ingame den Besitzername und in der Datenbank diesen Ebenfalls ist sogar nichtmal zwingend nötig.
Wenn du dich frägst woher ich das weiß ich hab mit ihm die Grundlage seines Carsystems geschrieben
Warum kickst du dein Spieler den überhaupt?
SetTimerEx("PlayerKick",1000,true,"i",playerid);
ZitatNico has left the server <0:2>
Das liegt daran das der Slot nicht frei ist , bei einem kick wird der Spieler temporär gebannt bis der Slot frei ist.
Manche behaupten das du erst die Positon der Spielers setzen musst bevor du ihn kickst , ich hingegen hatte das Problem noch nicht.
Sollte normal funktionieren bei dem Fahrzeug mit der Modelid 541
if(GetVehicleModel(vehicleid)==415&&sirenean[vehicleid]==0)
if(GetVehicleModel(vehicleid)==445&&sirenean[vehicleid]==0)
if(GetVehicleModel(vehicleid)==560&&sirenean[vehicleid]==0)
if(GetVehicleModel(vehicleid)==561&&sirenean[vehicleid]==0)
if(GetVehicleModel(vehicleid)==482&&sirenean[vehicleid]==0)
if(GetVehicleModel(vehicleid)==540&&sirenean[vehicleid]==0)
if(GetVehicleModel(vehicleid)==542&&sirenean[vehicleid]==0)
if(GetVehicleModel(vehicleid)==507&&sirenean[vehicleid]==0)
if(GetVehicleModel(vehicleid)==420&&sirenean[vehicleid]==0)
if(GetVehicleModel(vehicleid)==541&&sirenean[vehicleid]==0)
Der Code ist überflüssig daher funktioniert das auch nur bei der id 541 weil du in dem fall ein anweisungsblock
angibst.
Daher reicht diese Abfrage
if(sirenean[vehicleid]==0) {
da du danach die Modelid abfrägst.
Die Sirenen kannst du nur bei einem bestimmten wetterid oder nachts nutzen.
stock ChangeOwner(slotID, const NewOwner[]){
neq query[128];
format(query,128,"UPDATE `autos` SET `Name` = '%s' WHERE `CarID` = %d;",NewOwner,sCarInfo[slotID][CarID]);
mysql_query(query);
format(sCarInfo[slotID][sName],MAX_PLAYER_NAME,"%s",NewOwner);
return 1;
}
sollte so ganz easy gehen das einzige was du letztendlich übergeben musst ist die slotid, welche du ja über getSlotID ermittelst und den Namen des neuen Besitzers.
Anwendungsbeispiel: (Ist jetzt nicht aus dem Zusammenhang genommen)
new veh = GetPlayerVehicleID(playerid);
new id = getSlotID(veh);
ChangeOwner(id ,PlayerName(pID));
Es gibt keinen anderen Weg. Timestamps kommen hier nicht in Betracht, da man ja online sein soll, also ist der Weg, eine Variable immer zu inkrementieren doch eine ganz passable Möglichkeit.
würde ich so nicht behaupten , du kannst den timestamp beim einloggen in den Account in einer variable zwischenspeichern und die ausgelesene Zeit,
so kannst du beim abrufen des jetzigen timestamps die Zeit von dem timetsamp beim einloggen abziehen und die gespeicherte zeit hinzurechnen. Beim
Speichern wird zu der bestehenden zeit einfach die Differenz wie beim anzeigen zwischen dem jetzigen timestamp und dem beim einloggen hinzugerechnet.
hier mal eine funktion wie man die Zeit anzeigen könnte.
stock SecToHour(sec) {
return printf("%02d:%02d:%02d", (sec/3600),(sec/60), sec % 60);
}
bei hoster musst du Lokal auswählen und nicht jeden host
hier ist das tut dazu das hab ich jedoch auch in meinem ersten beitrag in diesem thread gepostet
Sache an, was müsste gemacht werden?
Alles anzeigen
Schau dir doch bitte sein Tutorial an. Ca. 5 Posts über dir.
Ich komme irgendwie mit den Texten nicht klar. Ich hab dein Objekt 19483 verwendet aber wenn ich einen Text drauf mache steht da nichts.
/edittext 0 Hallo Arial 15 0 0xffffff 0x000001
(0x000000 ist transparent. Aber warum? )
Es wird nur der Hintergrund schwarz. Aber kein weißes Hallo erscheint.
Was ich mir noch wünschen würde, wären wenn du alle Objekte die es gibt als Textdraw zum Select anbieten kannst (Mit Seiten zum Durchschalten, pro Seite 20/30/40/50 [or whatever ^^] Objekte. Durch anklicken wird das Objekt direkt erstellt.
´´
PS: bei /editid kommt dann als Hinweis: Benutze /create [ID]
Du nutzt falsche Farbcodes diese müssen im Format RGBA sein also fehlt dir jeweils noch ein wert.
Wenn ich meine ganzen Aufträge bearbeitet habe werde ich mal schauen ob ich ein update mach
Ich würde das streamer plugin bearbeiten, aber generel ist mir sowas egal ob meine map gerippt wird, du kannst auch ein copyright draufhauen auf deine maps und die leute verklagen.
Egal was du machst es gibt immer eine Möglichkeit.
http://gta-sa-mp.de/forum/3-sa…-how-to-anti-map-stealer/
Für einen Antimapstealer müsste man das streamer plugin bearbeiten jedoch gibts auch stealer, welche anders arbeiten und die daten anders abgreifen als direkt über den Ram.
Du kannst jedoch auch den spieler über die include von DT vollmüllen, jesoxh iat diese methode scheiße