bissle nach denken if abfrage mit IsACop ?
Beiträge von IPrototypeI
-
-
Also wieso du hier wegen sowas ein Post machst ist mir rätselhaft du hast doch automatisch die kills der teams wenn du eine variabel je nach kill
erhöhen lässt oder geht es dir um den formatierten Text ? -
du schickst doch ganz einfach eine formatierten
Text
an jeden also mit SendClientMessageToAll
http://wiki.sa-mp.com/wiki/Function:SendClientMessageToAll
aber was ich mich überhauptfrage warum benutzt du OnPlayerStateChange und nicht OnPlayerDeath wenn der Spieler dann stirbt oder besser gesagt
getötet wird.Das würde meiner meinung nach mehr sinn machen, da du dort schon zwei ids hast die Spielerid des verbrechers und die des Cops ( welcher in umlegen sollte killerid)
//edit und an alle dann solltest du es über der For-schleife einsetzen
-
An wenn oder was willst du die nachricht überhaupt schicken und wobei siehst du das problem oder eher weswegen bekommst du das nicht hin?
-
Diese wahl die du oben beschrieben hast ist nicht empfehlenswert für die weise auf die du sie benutzen möchtest
dazu empfiehlt sich ein drei dimensionales Arraynew Float:RandomF[][3][3]= {
{ //0
{X, Y, Z},
{X, Y, Z},
{X, Y, Z}
},
{//1{X, Y, Z},
{X, Y, Z},
{X, Y, Z}
},
{ //2
{X, Y, Z},//nummer 0
{X, Y, Z}, //nummer 1
{X, Y, Z} //nummer 2
}
};die 3 steht für die 3 werte pro "Eintrag" und die zweite 3 steht für die werte pro Eintrag in den Block also X,Y,Z
bei der rotation welche mann nicht brauch wäre es dann 4 da man 4 Werte hat also X,Y,Z,Rund zur verwendung kannst du dadurch eine forschleife schicken
new rand = random(sizeof(RandomF)) ,i;
for(;i< 3; i++){
RFire[i]=AddFire(RandomF[rand][i][0], RandomF[rand][i][1], RandomF[rand][i][2]);
}warum das i noch bei RFire naja das wirst du schon sehen wenn du das RFire object zerstörst werden alle Objekte unter dieser variabel zerstört.
mit zahlen würde das zum Beispiel so aussehen
RFire[1]=AddFire(RandomF[2][1][0], RandomF[2][1][1], RandomF[2][1][2]);das heißt das zweite Feuer hat die id 1 und daraus werden noch die daten/Werte aus dem array raus gezogen
für random haben wir mal als beispiel 2 genommen.
also werden die Zahlen aus dem zweiten Eintrag entnommen //2 und daraus wird nun Der Werteblock herraus gezogen welcher die nummer 1 hat //nummer 1 -
Also ich habe 2 (Variabeln)
stock HavePlayerAnKills(playerid,points)
{
if(GetPVarInt(playerid,"Kills")>=points) return 1;
return 0;
}stock HavePlayerAnEXP(playerid,exp)
{
if(GetPVarInt(playerid,"EXP")>=exp) return 1;
return 0;
}Dazu kommt das ich möchte das man EXP pro Kill bekommt,
dass kan ich ja auch mti switch & case machen und dann ab einer bestimmten Menge EXP auch ein LEvel bekommt.
Ich werde dies jetzt mal aus probrieren danke.
naja das ist etwas umständlich mach es am besten so das der spieler beim Kill auch die EXP bekommt.
Dann arbeitest du hier am besten mit OnPlayerDeath und lässt halt wie gesagt den wert der killerid erhöhen da dies der Spieler ist welcher die playerid
also den Spieler tötet und für den die Funktion ausgerufen wird.
die kills kannst du ja so erhöhen jedoch denke ich das dir das klar istSetPVarInt(playerid, "Kills", GetPVarInt(playerid, "Kills")++);
und dabei kannst du auch die EXPs dazu addieren.
weil sowas wie oben genannt wäre dann nur sinnvoll wenn du auch bei einer bestimmten anzahl was verändert hinzufügen willst bei spiel je mehr exp desto
mehr geld oder je mehr kills desto mehr exp. -
also wäre es dann so?
switch(GetPVarInt(playerid,"EXP"))
{
case 25:{}
case 50:{}
}
Als beispiel ja wenn deine Spielervariabel so heißt und die Spielervariabel den wert von 25 oder 50 hat dann ist dein Beispiel hier ganz richtig -
Klappt das auch wenn man bestimmte EXP erreichen soll und das nicht nur durch kills?
Jo warum sollte es nicht funktionieren case erfüllt die gleiche aufgabe wie else if und ist auch gleich schnell
hier wird das so gesehen unterteilt bei der abfrage sieht man ja auch
wenn der wert der variabel GetPVarInt(playerid,"Kills") 25 kills oder sei es exp hat wird erstmal zu dem entsprechenden case geswitcht .
und eine nadere möglickeit wäre
if(GetPVarInt(playerid,"Kills") == 25){}
else if (GetPVarInt(playerid,"Kills") == 50)
{}
-
Du musst natürlich ein zusammenhang herstellen zwischen der Person welche ein Auto sucht und dem Auto , welches gesucht wird.
Ein beispiel wäre bei einem Carsystem , welches dem Spieler erlaubt ein Auto zu kaufen und somit ein autoschlüssel einnimmt .
Dann hast du auch die möglichkeit dieses auto abzufragen ein beispiel wir haben die variabel
new autos[MAX_PLAYERS][3];
und wir kaufen ein Auto und belegen nun die nummer 0 und geben dem Auto natürlich auch die variabel also
dann kann man ganz grob den gedanken nehmen das es natürlich auch beim laden so erstellt wird je nach dem wie man es macht.auto[playerid][0] = CreateVehicle(560,.....);
und dann hättest du so die möglichkeit das ganze auch auszulesen
new Float:Vpos[3];
GetVehiclePos(auto[playerid][vehicleid],Vpos[0],Vpos[1],Vpos[2]);Das ganze funktioniert so das unser Script nun weiß nach dem kauf was welches Auto ist und das fehlt dir in deinem command.
und um abzufragen ob die Idee oder der Slot belegt ist kannst zum beispiel den Wert abfragen von der variabel da wie man ja weiß
wenn nix definiert ist bleibt der wert 0.Jedoch gibts auch andere möglichkeiten dazu könntest du in das dtc carsystem mal rein schauen , aber ich ja schon erwähnt habe ist das nur ein beispiel.
-
new kills = 0; sagt schon alles
du musst eine variabel erhöhen
und außerhalb des publics sollte dann
new kills, kills; stehen
if(GetPlayerTeam(killerid) == 1){
new String[20];
kills++;
format(String, sizeof(String), "%i",kills);
TextDrawSetString(TextdrawTDM6,String);
}
if(GetPlayerTeam(killerid) == 2){
new String[20];
kills1++;
format(String, sizeof(String), "%i",kills1);
TextDrawSetString(TextdrawTDM7,String);
} -
if(SBizzInfo[3][bProducts] == 0) return SendClientMessage(playerid,Farbe,"Die Tankstelle hat keine Produkte mehr!");
oder wenn das zu tankene nicht größer sein darf als die Produkte
if(FillUp > SBizzInfo[3][bProducts]) return SendClientMessage(playerid,Farbe,"Die Tankstelle hat dafür nicht genug Produkte!");
-
einfach abfragen ob der spieler diese taste drückt bei OnPlayerKeyStateChange
und ob der Spieler in dem Umfeld ist als IsPlayerInRangeOfPointhttp://wiki.sa-mp.com/wiki/OnPlayerKeyStateChange
Die Taste sollte diese ein
KEY_CROUCH
welche im Auto als h gedeutet wird -
suche diese Pflasterstraßen..
Mit Pflasterstein gibt es vieles Beispiel die id10378
6322
oder der untergrund beim lspd beinhaltet auch pflaster steine -
mal ganz doof kann man den befehl /skin deaktivieren und einfach ein "Der Befehl ist nicht verfügbar." senden?
ja klar geht sowas warum sollte das nicht gehen ^^:
du kannst auch statt return 0 bei OnPlayerCommandText was anderes returnen ein text oder sonst wasfür das empfiehlt sich eine variabel:
new aktiv;
//Hier ist der command
if(aktive == 0){ //ersteabfrage}else{ return SendClientMessage(playerid,Farbe,"Dein Text");}
-
Ganz einfach du lässt die anzahl von den produkten abziehen
kleine Hilfestellung:
je nach dem der rest sollte eigentlich klar sein.
SBizzInfo[bizid][sbProducts] -= Tankanzahl was augetankt wurde (Englisch)
//edit
-
Allgmein soll jeder für sich selbst seine lieblings Cmdart für sich entdecken
ob ocmd
zcmd
ycmd
rcmd
etc....einfach mal schauen was dir da am besten liegt
weil mehr als dazu zu sagen das alle schnell sind eine schneller als das andere aber das ist nur nebensächlich . -
so fern wie es
IsPlayerInAnyGangnicht gibt als stock oder public
=>Klammerfehler -
Ich habe auch Probkleme beim Connecten
füge
mysql_init();
über connect eingrund kannst hier nach lesen
http://wiki.sa-mp.com/wiki/MySQL_Plugin#mysql_init -
Wenn du willst ich habe noch ein Dynamisches Feuersstem rum liegen und würde es dem nach auch verkaufen
bei interesse melde dich per PN.Preis dann verhandelbar
-
ja an mysql hab ich auch schon gedacht. aber damit kenn ich mich überhaupt nicht aus, was aber nicht schlecht wäre es zu wissen. naja ich mach erstmal an den anderen funktionen weiter. danke euch trotzdem, dass ihr es versucht habt mir zu zeigen.
Diese einstellung find ich dazu leider unpassend wenn du willst kann ich dir das ganze mal erklären entweder auf dem Ts3 hier oder per pn
oder ich könnte dazu ein Tutorial noch schreiben ^^.@ Benjamin ich frag mich gerade wie sowas möglich wäre außer das auslesen oder vergleichen der einträge ? und gegeben falls dann überschreiben