mit RadioStations[1][1]
Beiträge von Hagi
-
-
SetPlayerArmour nutzt in der Syntax auch zwei Parameter. Neben der playerid auch die zu setzende Armour. Das gleiche bei SetPlayerHealth
-
Du sagst ja, dass du die CreateObject entfernt hast, sprich du keine GTA San Andreas Objekte entfernen willst.
Wenn du nun alle CreateObjects entfernt hast kann es nur an folgendem liegen:- Es gibt noch andere Objecte an der Stelle
- Du hast das Script nicht compiliert
- Das Script wurde nicht ordnungsgemäß auf den Server geladen
-
-
-
Ja richtig Irgentwie musst du ja auf das Auto referenzieren können.
Je nachdem in welchem Zusammenhang zu diese Autos nutzt fallen mir da mehrere Möglichkeiten ein die VdehicleID herauszufinden. Sobald du diese hast kannst du ja ganz normal die Position abfragen.1. Das nächste Auto an einem Punkt finden
2. Die Vehicleid beim einsteigen oder aussteigen in einer SpielerVariableSpeichern
3. Die Vehicleid in einer globalen Variable speichern ähnlich einem Fraktionsauto.Du musst halt nur irgendwie auf die VehicleID referenzieren können.
-
Da CreatePickup folgende Syntax verwendet:
(model, type, Float:X, Float:Y, Float:Z, Virtualworld)
wirst du die Virtual World anpassen , bzw sogar je ein Pickup pro BSN machen müssen.
-
Ja doch, wenn du vorher die Virtual Wrld nicht geändert hast, dann einfach zurück in die VirtualWorld 0, da dies der Standart ist. Sprich welchen man beim Spawnen gesetzt bekommt und wo sich dann im Regelfall alle Spieler aufhalten.
-
meinst du jetzt die Koordinaten x,y,z als Variablen ?
new Float:vehx, Float:vehy, Float:vehz;
GetVehiclePos(GetPlayerVehicleID(playerid), vehx, vehy, vehz);So kannst die Koordinaten des Autos, in welchem du dich befindest, in drei FLoat Variablen speichern.
-
Mit SetPlayerVirtualWorld(playerid,worldid) kannst du die Welt eines Spielers verändern. Für deine Anforderungen musst du also beim Betreten des BSN verschiedene Welten setzten und beim rausgehen wieder auf die Standartwelt, also 0, zurücksetzen.
if(pickupid == bsnenter)
{
SetPlayerPos(playerid,366.5392,-72.8895,1001.5078);
SetPlayerFacingAngle(playerid,299.4727);
SetPlayerInterior(playerid,10);
SetCameraBehindPlayer(playerid);
SetPlayerVirtualWorld(playerid,1);
}if(pickupid == bsnexit)
{
SetPlayerPos(playerid,1199.8545,-921.3196,43.0998);
SetPlayerInterior(playerid,0);
SetPlayerFacingAngle(playerid,267.7877);
SetCameraBehindPlayer(playerid);
SetPlayerVirtualWorld(playerid,0);
}Das gleiche für den anderen BSN aber dann nur mit der Weltid 2.
Wenn du jedoch schon aus einer Virtual World in den BSN reingehst, welche nicht 0 ist, solltest du die alte Welt per GetPlayerVirtualWorld(playerid); auslesen und in einer Spielervariable speichern, damit du hinterher wieder auf diese zurücksetzten kannst.
-
So wie ichs da oben reingeschrieben hab. Mit einer for alle spawnautos durchlaufen und jedes mal abfrage ob deine vehicleid die id ist, welche in der Variable des Spawnautos gespeichert wurde.
wenn du willst, kannst du bei einem Treffer noch ne break; reinbaun, damit die for dann abbricht.for(new i=0; i<sizeof(spawnauto); i++){
if(GetPlayerVehicleID(playerid)==spawnauto[i])
{
new veh = GetPlayerVehicleID(playerid);
SetVehicleHealth(veh,0.0);
break;
}
}
return 1; -
Nach dem Wiki von RemoveBuildingForPlayer
ZitatImportant Note: When an object is removed, the LOD (low detail, 'blurred') version of said object will appear. These must also be removed. JernejL's Map Editor support this (link below).
Bedeutet, dass du warscheinlich nicht "alles" entfernt hast. Es gibt jedoch ein Programm, welches dir beim Markieren der Objecte direkt die entsprechenden PWN Zeilen ausgibt. Dann musste nur noch C&P
-
Du kannst nicht einfach so ein komplettes Array abfrage
Außerdem hast du die Autoabfrage doppelt drin gehabt.
for(new i=0; i<sizeof(spawnauto); i++){
if(GetPlayerVehicleID(playerid)==spawnauto[i])
{
new veh = GetPlayerVehicleID(playerid);
SetVehicleHealth(veh,0.0);
}
}
return 1; -
Guten Abend Breadfisher.
Für ein Multiaccount-Erkennungs-Befehl muss ich eine Ip bestehend aus 4 Zahlenblöcken auf die ersten drei kürzen. Dafür will ich folgenden Code nutzen:
new ip[18];
GetPlayerIp(zielid,ip,sizeof(ip));
new pos,minus = 1;
do
{
pos = strfind(ip,".",true,strlen(ip)-minus);
minus ++;
}while(pos == -1 || minus < strlen(ip));new query[64],row[64],newip[18];
strmid(newip,ip,0,pos);Eigentlich müsste das ganze so funktionieren, dass solange vom letzten Zeichen des Strings IP um ein Zeichen weiter nach vorne gegangen wird bis ein Punkt gefunden wird. Von hinten fange ich an zu suchen, indem ich als Anfang der Suche nach einen Punkt bei der länge des Strings anfange und dann immer einen Wert weiter runter gehe. Theoretisch soll dann ja von strfind die Anzahl der Zeichen vor dem letzten Punkt ausgegeben werden. Diese Anzahl nutze ich dann in strmid um von Zeichen 0 bis zum ersten gefundenen Punkt des String (die ersten drei Ziffernblöcke) herauszuschneiden und im String newip zu speichern.
Theoretisch sollte so aus der Ip 127.0.0.1 der String 127.0.0 isoliert werden. Jedoch erhalte ich als Ergebnis den String 127
Sieht jemand den Fehler ? bzw kann mir eine einfachere Methode nennen mit der man die ersten drei Ziffernblöcke isolieren kann ?
MFG
Hagiedit: push nach Forenregeln
Zitat von ForenregelnIII.2 Damit sind insbesondere solche Beiträge oder Bearbeitungen von Beiträgen
unzulässig, die ausschließlich dazu dienen sollen, das jeweilige Thema
zu pushen.Dies gilt nicht, wenn der letzte Beitrag des Themas bereits seit 48 Stunden besteht.
-
Beim Einsteigen die id des Fahrers in einer Spielervariable des Passagiers speichern, damit du hinterher die Position des Fahrers herausfinden kannst. Dann einfach auf der x und y Koordinate +-5 Meter.
-
Seit dem letzten Update hat sich viel getan. Diverse Bugs wurden durch das Crashdetect Plugin gefixt.
Außerdem wurden Sonderbizes eingebaut, welche einem Premiumpunkte und Zugang zu speziellen Features geben.
Außerdem wurden diverse Radiostreams eingebunden, damit man auch mit entsprechender Hintergrundmusik spielen kann. -
Nach mehrere Test habe ich die Lösung gefunden.
Wenn man nur die Health settet, dann geht es über die 1000 Hp Grenze hinaus.
Wenn man jedoch noch den optischen Schaden repariert (entweder RepairVehicle oder DamageStatus oder evtl. auch beides) dann werden immer wieder 1000 HP gesetzt.edit: 01.05.2012 - 00:23
Ich habe das ganze jetzt noch intensiver getestet. Also nach meinen Testergebnissen, wird die Hp des Autos nur durch den RepairVehicle Befehl wieder auf 1000 gesetzt. Wenn man Räder usw durch UpdateVehicleDamageStatus repariert, bleibt die Hp so, wie sie gesetzt wurde. Sprich bei über 1000 Hp wird sie nicht wieder auf 1000 Hp gesetzt. -
Du musst den Spieler bei OnPlayerSpawn ins Krankenhaus setzten. Dort müsstest du dann z.B. durch eine Kontrollvariable bei OnPlayerDeath einen Wert setzten, damit der Spieler nicht beim normalen Einloggen (erstes Spawnen) ins Krankenhaus kommt, welchen du dann bei OnPlayerSpawn abfragst.
-
Also so wie ich das in deinem Codebanner da verstanden habe wird eine Variable auf true gesetzt, dass der Spieler betankt wird und gleichzeitig per
SetTimer("Fillup",RefuelWait,0);
Der Public "Fillup" aufgerufen.
Wäre nett, wenn du den auch mal posten könntest, da dort dann auch so Sachen wie unfreeze drin sein müssten.
Auch bin ich mir noch nicht ganz schlüssig, warum du keinen TimerEx nutzt sondern einen Timer ohne Parameterübergabe. -
Simon, deins ist ein Command und kein Dialog.
Also die einzige Möglichkeit wird wohl wie von gShokZ gesagt sein, den ersten String in einem String zu speichern.Sprich.
Erster Dialog wird aufgerufen.
Im OnDialogResponse dann den inputtext per SetPVarString(playerid,"wantedstring",inputtext); speicher.
Dann den zweiten Dialog aufrufen.
Im OnDialogResponse des zweiten Dialogs dann per GetPVarString(playerid,"wantedstring"); den ersten inputstring wieder hervorholen.